An integrated circuit device includes a first memory cell that stores data representative of configuration data when operating in a first mode, wherein the first memory cell stores data representative of user-accessible data when operating in a second mode. The integrated circuit device also includes a second memory cell that stores a value indicating whether the first memory cell is operating in the first mode or is operating in the second mode. The integrated circuit device further includes a switch coupled to the first memory cell and controlled by the second memory cell, wherein the switch provides a defined value to be read in place of the stored data of the first memory cell when the second memory cell stores the value indicating that the first memory cell is operating in the second mode.
|
1. An integrated circuit device comprising:
a first memory cell that stores data representative of configuration data when operating in a first mode, wherein the first memory cell stores data representative of user-accessible data when operating in a second mode and wherein the first memory cell is addressed by a first read address line;
a second memory cell that stores a first value indicating whether the first memory cell is operating in the first mode or is operating in the second mode; and
a switch coupled to the first memory cell and controlled by a switch logic configured to receive, during an error detection operation, the first value from the second memory cell and a read signal from the first read address line, wherein the switch provides a defined value to be read in place of the stored data of the first memory cell when the first value indicates that the first memory cell is operating in the second.
5. An integrated circuit device comprising:
a first plurality of memory cells configured to store static data and configured to store dynamic data;
a plurality of address lines, wherein each memory cell of the first plurality of memory cells is associated with a respective address line;
a first identifier memory cell that stores a first value indicating whether the first plurality of memory cells is storing the static data or the dynamic data;
a first switch logic configured to assert a control signal based on the first value when a respective first memory cell of the first plurality of memory cells is addressed using the respective address line during an error detection or correction operation; and
a first transistor coupled to the respective first memory cell and to the switch logic wherein the first transistor provides a defined value to be read in place of the dynamic data stored in the respective first memory cell when the control signal is asserted.
2. The integrated circuit device of
3. The integrated circuit device of
4. The integrated circuit device of
8. The integrated circuit device of
9. The integrated circuit device of
10. The integrated circuit device of
11. The integrated circuit device of
12. The integrated circuit device of
13. The integrated circuit device of
a second plurality of memory cells configured to store static data and configured to store dynamic data, wherein each memory cell of the second plurality of memory cells is associated with the respective address line of the plurality of address lines;
a second identifier memory cell that stores a second value indicating whether the second plurality of memory cells is storing the static data or the dynamic data; and
a second switch logic configured to assert a second control signal based on the second value when a respective second memory cell of the second plurality of memory cells is addressed using the respective address line during the error detection operation; and
a second transistor coupled to the respective second memory cell and to the second switch logic, wherein the first transistor provides the defined value to be read in place of the dynamic data stored in the respective second memory cell when the second control signal is asserted.
|
The present disclosure relates generally to a programmable logic device. More particularly, the present disclosure relates to a logic array block (LAB) in the programmable logic device that uses look-up table (LUT)-based random access memory (RAM).
This section is intended to introduce the reader to various aspects of art that may be related to various aspects of the present disclosure, which are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present disclosure. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
Programmable logic fabric of an integrated circuit device may be programmed to implement a programmable circuit design to perform a wide range of functions and operations. The programmable logic fabric may include logic array blocks (LABs) that have lookup tables (LUTs) that can be configured to operate as different logic elements based on the configuration data programmed into memory cells in the LAB s. These memory cells store may store configuration data and be referred to as configuration random access memory (CRAM).
Some types of LABs, which may be referred to as memory logic array blocks (MLABs), can operate in either a lookup-table mode (LUT-mode) or a memory mode such as random access memory mode (RAM-mode) or shift-register (DLM) mode. MLABs have memory cells which may be referred to generally as lookup table random access memory (LUTRAM). When operating in the lookup-table mode, the LUTRAM memory cell(s) of an MLAB store configuration data that define the operation of the LUT of the MLAB. Thus, in the lookup-table mode, the MLAB can be programmed to represent combinational logic of the programmable circuit design, in similar fashion to other LABs. When operating in the memory mode, the LUTRAM memory cell(s) of the MLAB operate as cells of random access memory or as cells of a shift register that hold user data. Thus, in the memory mode, the MLAB operates like random access memory or a shift register. By selectively storing either configuration data or user data, the MLABs may operate either as configurable logic or as a cell of user-accessible memory depending on the programmable circuit design that is in use. This may allow programmable circuit designs to take advantage of the MLAB memories to store user data when the MLABs are not used as combinational logic of the programmable circuit design.
It may be useful to verify the integrity of a programmable circuit design that has been programmed into the LABs (which includes MLABs operating in LUT-mode) of the programmable logic fabric. Since the programmable circuit design is based on the configuration data programmed into the LABs, any deviations from the expected values of the configuration data may suggest that the programmable logic fabric has been corrupted or tampered with. If the programmable logic fabric has been corrupted or tampered with, the programmable logic design may not perform as expected. Accordingly, error detection/correction may be performed on the cells of the programmable logic fabric. The configuration data stored in the CRAM memory cells of the LABs (and the LUTRAM memory cells of the MLABs operating in LUT-mode) may be static for any particular programmable circuit design and, as such, should not change during operation of the programmable logic fabric configured with the programmable circuit design. An error may thus be properly detected/corrected when the configuration data stored in an LAB or MLAB memory cell changes (without authorization and/or acknowledgement). However, user data stored in an MLAB memory cell is dynamic and may regularly change. As such, an error may be detected when the user data stored in the memory cell changes, and the user data may be rewritten due to error correction. Without distinguishing between configuration data and user data stored in the MLAB memory cells, changes in the data stored in the MLAB memory cells may be improperly and repeatedly detected without acknowledging whether the changes are to the configuration data or user data.
A summary of certain embodiments disclosed herein is set forth below. It should be understood that these aspects are presented merely to provide the reader with a brief summary of these certain embodiments and that these aspects are not intended to limit the scope of this disclosure. Indeed, this disclosure may encompass a variety of aspects that may not be set forth below.
Present embodiments relate to systems and devices for providing dummy read values during error detection/correction operations performed on memory cells of look-up tables in a logic array block of a programmable logic device when the memory cells are used to store dynamic user data. Because these dummy read values are static and known in advance, error detection/correction of the memory cells can identify when the normally static configuration data has changed (without authorization and/or acknowledgement), even when some of the memory cells are being used to store dynamic user data.
In a first embodiment, an integrated circuit device includes a first memory cell that stores data representative of configuration data when operating in a first mode, wherein the first memory cell stores data representative of user-accessible data when operating in a second mode. The integrated circuit device also includes a second memory cell that stores a value indicating whether the first memory cell is operating in the first mode or is operating in the second mode. The integrated circuit device further includes a switch coupled to the first memory cell and controlled by the second memory cell, wherein the switch provides a defined value to be read in place of the stored data of the first memory cell when the second memory cell stores the value indicating that the first memory cell is operating in the second mode.
In a second embodiment, an integrated circuit device includes a first memory cell that stores static and dynamic data. The integrated circuit device also includes a second memory cell that stores a value indicating whether the first memory cell is storing the static data or the dynamic data. The integrated circuit device further include a transistor coupled to the first memory cell and controlled by the second memory cell, wherein the transistor provides a defined value to be read in place of the dynamic data stored in the first memory cell when the second memory cell stores the value indicating that the first memory cell is storing the dynamic data.
In a third embodiment, a method includes initiating memory data readout for error checking of an integrated circuit device comprising a memory cell. The method also includes determining whether the memory cell is storing user data. The method further includes reading out dummy data in place of the user data stored in the memory cell when the memory cell stores the user data. The method also includes reading out data stored in the memory cell when the memory cell does not store the user data. The method further includes performing the error checking of the integrated circuit device.
Various refinements of the features noted above may be made in relation to various aspects of the present disclosure. Further features may also be incorporated in these various aspects as well. These refinements and additional features may be made individually or in any combination. For instance, various features discussed below in relation to one or more of the illustrated embodiments may be incorporated into any of the above-described aspects of the present invention alone or in any combination. The brief summary presented above is intended only to familiarize the reader with certain aspects and contexts of embodiments of the present disclosure without limitation to the claimed subject matter.
Various aspects of this disclosure may be better understood upon reading the following detailed description and upon reference to the drawings in which:
One or more specific embodiments will be described below. In an effort to provide a concise description of these embodiments, not all features of an actual implementation are described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions must be made to achieve the developers' specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure.
As mentioned above, programmable logic fabric of an integrated circuit device may be programmed to implement a programmable circuit design to perform a wide range of functions and operations. The programmable logic fabric may include logic array blocks (LABs) that have lookup tables (LUTs) that can be configured to operate as different logic elements based on the values programmed into memory cells in the LABs. These memory cells may store configuration data and may be referred to as configuration random access memory (CRAM).
Some types of LABs, which may be referred to as memory logic array blocks (MLABs), can operate in either a lookup-table mode (LUT-mode) or a memory mode such as random access memory mode (RAM-mode) or shift-register (DLM) mode. MLABs have memory cells which may be referred to generally as lookup table random access memory (LUTRAM). When operating in the lookup-table mode, the LUTRAM memory cell(s) of an MLAB store configuration data that define the operation of the LUT of the MLAB. Thus, in the lookup-table mode, the MLAB can be programmed to represent combinational logic of the programmable circuit design, in similar fashion to other LABs. When operating in the memory mode, the LUTRAM memory cell(s) of the MLAB operate as cells of random access memory or as cells of a shift register that hold user data. Thus, in the memory mode, the MLAB operates like random access memory or a shift register. By selectively storing either configuration data or user data, the MLABs may operate either as configurable logic or as a cell of user-accessible memory depending on the programmable circuit design that is in use. This may allow programmable circuit designs to take advantage of the MLAB memories to store user data when the MLABs are not used as combinational logic of the programmable circuit design.
Embodiments of the present disclosure relate to providing dummy read values when LUTRAM cells store dynamic user data. Because these dummy read values are static and known in advance, when error detection/correction or similar operations are performed on the programmable logic device, any unexpected changes in configuration data can be identified. The dummy read values may be provided via a transistor added at a read port of a LUTRAM cell, via a transistor added at a data line across multiple LUTRAM cells on the same data line, or via a transistor added at a sector data line across multiple data lines across of multiple LUTRAM cells. In this manner, read address-line gating logic may be avoided, saving valuable die space from the MLAB associated with the LUTRAM cell. Avoiding read address-line gating logic from each LUTRAM cell enables a smaller MLAB. Additionally, power leakage in the MLAB may be reduced by avoiding using read address-line gating logic in each LUTRAM cell.
Keeping this in mind,
The components of the programmable logic fabric 18 may include one or more logic array blocks (LABs) 30 and/or one or more memory LABs (MLABs) 32 that provide interconnections for logic elements within each respective LAB 30 or MLAB 32. Each LAB 30 or MLAB 32 may include one or more look-up tables (LUTs) that may be used to replicate a logic gate configured to perform a certain function with a certain number of inputs. A LUT in a LAB 30 may be configured and/or controlled by configuration data stored in a CRAM cell, and a LUT in an MLAB 32 may be configured and/or controlled by configuration data stored in a LUTRAM cell. Additionally, the LUTRAM cell in the MLAB 32 may be used to store user-accessible data when the LUTRAM cell in the MLAB 32 is not used to store configuration data (e.g., when the corresponding LUT is not being used). The components of the programmable logic fabric 18 may also include one or more digital signal processing (DSP) blocks 34 to perform DSP functions.
The LUTRAM cells 50 may function as user-accessible (e.g., via a read/write operation) memory cells (e.g., static RAM (SRAM) cells) when not performing LUT-related functions. For instance, a LUTRAM cell 50 may not be performing LUT-related function when a LUT in a respective MLAB 32 associated with the LUTRAM cell 50 is not used. In some embodiments, memory cells (e.g., of the MLAB 32) may include storage identifier memory cells (e.g., CRAM cells) that store a value indicative of whether one or more respective LUTRAM cells 50 is storing configuration data or user data. As illustrated, a CRAM cell 51 stores a value indicative of whether a coupled LUTRAM cell 50 is storing configuration data or user data. However, when error detection/correction is performed on the LUTRAM cell 50 and the LUTRAM cell 50 is being used to store user data, an error may be detected because a value of the LUTRAM cell 50 has changed. Undesirably, user data stored in the LUTRAM cell 50 may be rewritten in an effort to correct the detected error. Read address-line gating logic may be added to an MLAB 32 associated with the LUTRAM cell 50 to disable read/write access to the LUTRAM cell 50 during error detection/correction operations so that the user data in the LUTRAM cell 50 may not be detected and/or overwritten. For example, the read address-line gating logic may be configured to gate a read address line (e.g., 40) of the LUTRAM cell 50 off during an error detection/correction operation, such that a read port of the LUTRAM cell 50 is disabled. However, the read address-line gating logic occupies valuable surface area on the MLAB 32. Additionally, with an increasing number of components in and processes performed by the programmable logic fabric 18, the address lines (e.g., 40) of the programmable logic fabric 18 use higher voltage differences to reliably read and write cells. Because local address gates may not be capable of producing the higher voltage differences, the higher voltage differences may be implemented in a periphery of the programmable logic fabric using extra voltage supplies. As a result, use of the read address-line gating logic may lead to power leakage.
The circuitry in the FPGA device 4 determines (node 45) whether the memory cell, the line of memory cells, or the sector of memory cells stores user data. In some embodiments, this may be determined by reading a value stored in a corresponding storage identifier memory cell (e.g., the CRAM cell 51). The storage identifier memory cell may store a value indicative of whether a LUTRAM cell 50, a line of LUTRAM cells 50, or a sector of LUTRAM cells 50 is storing configuration data or user data. If the memory cell, the line of memory cells, or the sector of memory cells stores user data, the circuitry in the FPGA device 4 reads out (block 46) dummy data in place of the stored user data. As discussed in further detail below, the circuitry in the FPGA device 4 may provide the dummy read value(s) via a switch, such as a transistor, added at a read port of the LUTRAM cell 50, a switch added at a data line across multiple LUTRAM cells 50 on the same data line, or a switch added at a sector data line across multiple data lines across of multiple LUTRAM cells 50. The method 43 then proceeds to node 48, as described below.
If the circuitry in the FPGA device 4 determines that the memory cell, the line of memory cells, or the sector of memory cells does not store user data, the circuitry in the FPGA device 4 reads out (block 47) the stored data (e.g., configuration data). The circuitry in the FPGA device 4 then determines (node 48) whether the memory data readout operation is complete. If not, the method 43 returns to node 45. If the memory data readout operation is complete, the circuitry in the FPGA device 4 performs (block 49) the error checking operation. The error checking may confirm whether the data stored in the memory cells is correct. For example, the error checking may detect single event upsets (SEUs) that include changes (e.g., unauthorized changes) in state of a storage element in the FPGA device 4. In some embodiments, the circuitry performing the error checking operation is built into the FPGA device 4. The error checking operation may include a cyclic redundancy check (CRC) that includes calculating, transmitting, and comparing a checksum value based on transmitted data. The error checking may occur continuously and/or automatically.
The method 43 enables the circuitry in the FPGA device 4 to perform error checking on the dummy read value(s), rather than the value stored in the LUTRAM cell 50, when the LUTRAM cell 50 stores dynamic user data. As a result, an error may not be detected in the LUTRAM cell 50 and the user data stored in the LUTRAM cell 50 may not be overwritten by an error correction operation. In this manner, read address-line gating logic may not be used, and thus removed, from the MLAB 32 associated with the LUTRAM cell 50. Removal of the read address-line gating logic from each LUTRAM cell 50 enables a smaller MLAB 32. Additionally, power leakage in the MLAB 32 may be reduced by removing the read address-line gating logic in each LUTRAM cell 50.
The LUTRAM cell 50 may be electrically coupled to a switch or transistor 62 (e.g., MN0). As illustrated, the transistor 62 is electrically coupled to the LUTRAM cell 50 at a read port of the LUTRAM cell 50. Transistors 54 (e.g., MN1) and 62 may be n-channel MOSFET (NMOS) pull-down transistors. When the LUTRAM cell 50 is operating in the RAM mode and an error detection/correction operation is being performed (e.g., via a read operation using the read address line 58), a control signal 64 (e.g., dummy_ed) of the transistor 62 is asserted (i.e., active high). When the LUTRAM cell 50 stores a low (i.e., 0) value, the transistor 62 may cause the data line 60 to pull down (e.g., short to a ground). When the LUTRAM cell 50 stores a high (i.e., 1) value, the transistors MN0 62 and MN1 54 may pull down the data line 60. A data register reading the data line 60 of the LUTRAM 50 via the read address line 58 when the LUTRAM cell 50 is operating in the RAM mode and the error detection/correction operation is being performed receives the low value. The low value output may then be sent for error detection/correction. As such, an error may not be detected in the LUTRAM cell 50 and the user data stored in the LUTRAM cell 50 may not be overwritten by an error detection/correction operation, and read address-line gating logic may not be used, and thus removed, from the MLAB 32 associated with the LUTRAM cell 50.
While the embodiments set forth in the present disclosure may be susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and have been described in detail herein. However, it should be understood that the disclosure is not intended to be limited to the particular forms disclosed. The disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure as defined by the following appended claims.
The techniques presented and claimed herein are referenced and applied to material objects and concrete examples of a practical nature that demonstrably improve the present technical field and, as such, are not abstract, intangible or purely theoretical. Further, if any claims appended to the end of this specification contain one or more elements designated as “means for [perform]ing [a function] . . . ” or “step for [perform]ing [a function] . . . ”, it is intended that such elements are to be interpreted under 35 U.S.C. 112(f). However, for any claims containing elements designated in any other manner, it is intended that such elements are not to be interpreted under 35 U.S.C. 112(f).
Ng, Bee Yee, Chan, Gaik Ming, Schmit, Herman Henry, Chromczak, Jeffrey Christopher
Patent | Priority | Assignee | Title |
11468220, | Jul 24 2020 | GOWIN SEMICONDUCTOR CORPORATION | Method and system for enhancing programmability of a field-programmable gate array via a dual-mode port |
Patent | Priority | Assignee | Title |
5701267, | Aug 18 1995 | Renesas Electronics Corporation | Semiconductor storage device with macro-cell with monitoring of input data |
5933855, | Mar 21 1997 | SAMSUNG ELECTRONICS CO , LTD | Shared, reconfigurable memory architectures for digital signal processing |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jul 26 2016 | SCHMIT, HERMAN HENRY | Altera Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 043347 | /0618 | |
Jul 29 2016 | NG, BEE YEE | Altera Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 043347 | /0618 | |
Jul 29 2016 | CHAN, GAIK MING | Altera Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 043347 | /0618 | |
Aug 03 2016 | CHROMCZAK, JEFFREY CHRISTOPHER | Altera Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 043347 | /0618 | |
Aug 04 2016 | Altera Corporation | (assignment on the face of the patent) | / | |||
Jul 08 2022 | Altera Corporation | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 060778 | /0032 | |
Jul 18 2022 | Intel Corporation | TAHOE RESEARCH, LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 061827 | /0686 |
Date | Maintenance Fee Events |
Jun 22 2022 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Jan 29 2022 | 4 years fee payment window open |
Jul 29 2022 | 6 months grace period start (w surcharge) |
Jan 29 2023 | patent expiry (for year 4) |
Jan 29 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 29 2026 | 8 years fee payment window open |
Jul 29 2026 | 6 months grace period start (w surcharge) |
Jan 29 2027 | patent expiry (for year 8) |
Jan 29 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 29 2030 | 12 years fee payment window open |
Jul 29 2030 | 6 months grace period start (w surcharge) |
Jan 29 2031 | patent expiry (for year 12) |
Jan 29 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |