EP3271922A1 - One time programmable memory - Google Patents

One time programmable memory

Info

Publication number
EP3271922A1
EP3271922A1 EP16714664.6A EP16714664A EP3271922A1 EP 3271922 A1 EP3271922 A1 EP 3271922A1 EP 16714664 A EP16714664 A EP 16714664A EP 3271922 A1 EP3271922 A1 EP 3271922A1
Authority
EP
European Patent Office
Prior art keywords
word
inverted
stored
bit
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP16714664.6A
Other languages
German (de)
French (fr)
Inventor
Rodney Pesavento
Michael Simmons
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of EP3271922A1 publication Critical patent/EP3271922A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/16Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using electrically-fusible links
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/18Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5646Multilevel memory with flag bits, e.g. for showing that a "first page" of a word line is programmed but not a "second page"
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5647Multilevel memory with bit inversion arrangement

Definitions

  • the present disclosure relates to one-time programmable memory, and in particular to a method and system for the minimization of programming such memories.
  • the programming time of One Time Programmable (OTP) memories can be longer by an order of magnitude or so.
  • the programming time depends on the number of bits to be programmed to a particular programmed state (typically ⁇ ').
  • programming to the opposite erased state typically ⁇ '
  • ⁇ ' programming to the opposite erased state
  • OTP programming time can be minimized by algorithmically selecting between inverted and non-inverted programming Words.
  • systems and method for controlling the programming of a one-time programmable (OTP) memory include an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating a word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion, encoding logic configured determine whether a word is to be stored inverted or non-inverted, and decoding logic configured to decode a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
  • OTP one-time programmable
  • the systems and methods include a circuit arrangement for programming a one-time programmable (OTP) memory.
  • the circuit arrangement may include an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating a word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion; encoding logic configured determine whether a word is to be stored inverted or non-inverted; and decoding logic configured to decode a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
  • "n" may be equal to thirty-two.
  • the OTP memory may include address and control inputs for reading and writing a word.
  • the encoding logic may also store a word inverted if the number of bit having a value of T is greater than n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
  • the encoding logic may include an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic ⁇ ' in the word and operable to control the multiplexer to select the inverted word if the number of logic T in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
  • the decoding logic may include an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
  • the encoding logic may store a word inverted if the number of bit having a value of ⁇ ' is greater than or equal to n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
  • the encoding logic may store a word inverted if the number of bit having a value of T is greater than an inversion threshold and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
  • the systems and methods may include a method for programming a one-time programmable (OTP) memory.
  • the method may include storing a data word in an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating the data word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion; determining whether a word is to be stored inverted or non-inverted; and decoding a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
  • storing the data word inverted may include storing the data word inverted if the number of bit having a value of ⁇ ' is greater than n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
  • storing the data word may include storing the data word via encoding logic, wherein the encoding logic comprises an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic ⁇ ' in the word and operable to control the multiplexer to select the inverted word if the number of logic ⁇ ' in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
  • the encoding logic comprises an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic ⁇ ' in the word and operable to control the multiplexer to select the inverted word if the number of logic ⁇ ' in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
  • decoding the stored word may include decoding the stored word via decoding logic, and wherein the decoding logic comprises an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
  • the decoding logic comprises an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
  • the systems and methods may include a computer-implemented method for executing program instructions stored on non-transitory computer-readable media by a processor, wherein the instructions when executed by the processor perform the steps including storing a data word in an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating the data word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non- inverted fashion; determining whether a word is to be stored inverted or non-inverted; and decoding a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
  • Figure 1 illustrates an example programming scheme for determining whether to invert the read data to produce original program data, in accordance with certain embodiments of the present disclosure
  • Figure 2 illustrates an example table of programming values for programming a scheme for programming a one-time programmable memory, in accordance with certain embodiments of the present disclosure.
  • OTP programming time can be minimized by algorithmically selecting between inverted and non-inverted programming Words.
  • inverted and non-inverted programming Words In order to put a maximum value to the programming time for the entire array, it is possible to introduce a limiting of the number of bits being programmed to ⁇ ', and therefore a limiting of the total programming time. This is done at the cost of adding one extra OTP bit for each n-bit word (where n bits represents the read/write width of the OTP array). For example, a 32-bit wide OTP array would be updated to be 33 bits wide.
  • the extra bit for each word in the OTP array is used to determine whether the corresponding word is an inverted or non-inverted representation of the desired value.
  • the OTP controller (or in this case logic outside the OTP controller) counts the number of Ts in the data to be written. If it is greater than n/2 (i.e., 16 bits for a 32- bit wide OTP array), then the data is inverted before being written into the array, and the (n+ 1) bit (hereafter called the "INV" bit) is written as T. If the number of ' 1 's is less than n/2, then the INV bit is not programmed (i.e., written as ⁇ ').
  • the INV bit is read as part of the word, and used to determine whether to invert or not invert the read data to produce the original data that was to be programmed into the array.
  • the various embodiments make use of bit wide programming and odd size OTP memory configurations to implement.
  • the total programming time for a 32-bit word depends on the number of bits being programmed to ⁇ ', and is a typical number, as programming of each bit is self-timed within the array.
  • the OTP array is manufactured to have an un-programmed state of '0' out of the fab, it is only necessary to program T bits - programming of '0' bits is not necessary and such an operation is effectively skipped within the OTP array. This leads to the situation where the total programming time for an array must be given with a specified "bias" (i.e., how many bits in the array are being programmed to ⁇ ', and how many bits are programmed to ⁇ ').
  • the extra bit for each word in the OTP array is used to determine whether the corresponding word is an inverted or non-inverted representation of the desired value.
  • the OTP controller (or in this case logic outside the OTP controller) counts the number of Ts in the data to be written. If it is greater than n/2 (i.e., 16 bits for a 32- bit wide OTP array), then the data is inverted before being written into the array, and the (n+1) bit (hereafter called the "INV" bit) is written as T. If the number of ⁇ 's is less than n/2, then the INV bit is not programmed (i.e., written as ⁇ ').
  • Figure 1 illustrates an example programming scheme 100 for determining whether to invert the read data to produce original program data, in accordance with certain embodiments of the present disclosure.
  • the INV bit is read as part of the word, and used to determine whether to invert or not invert the read data to produce the original data that was to be programmed into the array.
  • a system could OR bits 32 and 31, bits 30 and
  • scheme 100 may include an OTP controller 102 communicatively coupled to an OTP array 104.
  • OTP controller 102 may be any appropriate OTP controller such as those found in the Microchip PIC series.
  • OTP array 104 may be any appropriate OTP array such as those found in the Microchip PIC series.
  • OTP controller 102 may be communicatively coupled to OTP array 104 through one or more control signals.
  • the number and type of control signals may vary according to the particular configuration of scheme 100.
  • OTP controller 102 may be communicatively coupled to OTP array 104 through a terminal resent (e.g., "RSTN”) signal, a command enable (e.g., "CEN”) signal, secondary enable (e.g., "WEN”) signal, and/or a plurality of address signals (e.g., "A[m:0].
  • RSTN terminal resent
  • CEN command enable
  • WEN secondary enable
  • A[m:0 a plurality of address signals
  • OTP controller 102 may also be communicatively coupled to OTP array 104 through one or more data signals (e.g., "D[31 :0],” which would illustrate a 32-bit data bus), as well as one or more secondary or return data signals (e.g., "Q[31 :0],” which would illustrate a 32-bit data bus).
  • data signals e.g., "D[31 :0]”
  • secondary or return data signals e.g., "Q[31 :0]
  • the communicative coupling between OTP controller 102 and OTP array 104 may include a plurality of additional components as part of the data transfer.
  • scheme 100 may also include inverter 106, ones counter 108, multiplexor 110, inverter 112, and multiplexor 114.
  • the data that OTP controller 102 sends through the plurality of data signals may be multiplexed (via multiplexor 110) with an inversion of that same data. That data will have been inverted by inverter 106.
  • the selection of which signal to multiplex at multiplexor 108 may be provided by ones counter 108.
  • Ones counter 108 may be any appropriate circuitry operable to provide a count of the number of "Is" that are stored in the word size being written to OTP array 104 by OTP controller 102. Ones counter 108 may be operable to calculate this number and use it to determine whether the original data or the inverted data is to be written to OTP array 104. In addition, ones counter 108 may output the last logic "1" to be written as the extra bit in each stored word at OTP array 104 In some embodiments, scheme 100 may also include inverter 114 and multiplexor 112.
  • the data that OTP array 104 send through the plurality of return data signals may be multiplexed (via multiplexor 112) with an inversion of that same data, as provided by inverter 114.
  • multiplexor 112 may be switched by a signal from OTP array 104, wherein that signal may be the last, extra bit appended to the end of each word stored in OTP array 104.
  • Figure 2 illustrates an example table of programming values 200 for programming a scheme 100 for programming a one-time programmable memory, in accordance with certain embodiments of the present disclosure.
  • Table of programming values 200 is provided as an aid in understanding the present disclosure and should not be understood as limiting the present disclosure.
  • table 200 may include data column 202, zero bias column 204, inversion indication column 206, and programmed value column 208.
  • Data column 202 includes each potential data for the data value to be programmed according to scheme 100.
  • data range column 202 indicates only a four-bit range for ease of illustration. More, fewer, and/or different values may be present within any particular configuration without departing from the scope of the present disclosure.
  • Zero bias column 204 may be used to indicate the percentage of data values at the particular data are zero. Although any number of indication schemes may be used, in the example table 200, zero bias column 204 indicates whether the particular data has less than fifty percent, exactly fifty percent, or greater than fifty percent zero. Inversion indication column 206 may then indicate whether to invert the data at the particular data based at least on whether the zero bias at that data location is over a particular threshold. For example, if the zero bias is greater than fifty percent, then invert the data. Inversion indication column 206 may include a data value associated with a particular data value indicating whether to invert the data. For example, the table may include a "YES" if the data is to be inverted.
  • inversion indication column 206 may include a logical zero for "do not invert” and a logical one for "do invert” or vice versa.
  • Other indication schemes may be available to one of ordinary skill in the art without departing from the scope of the present disclosure.
  • table 200 may also include programmed value column 208.
  • Programmed value column 208 may include the value to be written into the specified data by, for example, OTP controller 102.
  • table 200 indicates that the value "0000" should be written to the data value. This is because the zero bias is less than fifty percent (as indicated in the first row of zero bias column 204), and thus no inversion has taken place (as indicated in the first row of inversion indication column 206).
  • Table 2 may also include programmed value column 208.
  • Programmed value column 208 may include the value to be written into the specified data by, for example, OTP controller 102.
  • table 200 indicates that the value "0000" should be written to the data value. This is because the zero bias is less than fifty percent (as indicated in the first row of zero bias column 204), and thus no inversion has taken place (as indicated in the first row of inversion indication column 206).
  • Other example values are illustrated in Figure 2.

Landscapes

  • Read Only Memory (AREA)
  • Semiconductor Memories (AREA)
  • Logic Circuits (AREA)

Abstract

Systems and method for controlling the programming of a one-time programmable (OTP) memory are disclosed. The systems and methods include an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating a word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion, encoding logic configured determine whether a word is to be stored inverted or non-inverted, and decoding logic configured to decode a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.

Description

One Time Programmable Memory CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims priority to commonly owned U.S. Provisional Patent Application No. 62/136,061 filed March 20, 2015; which is hereby incorporated by reference herein for all purposes.
TECHNICAL FIELD
The present disclosure relates to one-time programmable memory, and in particular to a method and system for the minimization of programming such memories. BACKGROUND
As compared to Flash technology, the programming time of One Time Programmable (OTP) memories can be longer by an order of magnitude or so. In addition, the programming time depends on the number of bits to be programmed to a particular programmed state (typically Ί '). In many OTP implementations, programming to the opposite erased state (typically Ό') need not be performed, because all bits in the OTP memory are in their erased state when they have completed fabrication. However, due to the fact that we cannot predict the bias (number of '0' vs Ί ') in the OTP contents, we are still stuck with a maximum programming time value that assumes all bits are programmed.
SUMMARY According to various embodiments, OTP programming time can be minimized by algorithmically selecting between inverted and non-inverted programming Words.
According to various embodiments, systems and method for controlling the programming of a one-time programmable (OTP) memory are disclosed. The systems and methods include an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating a word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion, encoding logic configured determine whether a word is to be stored inverted or non-inverted, and decoding logic configured to decode a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
In some embodiments, the systems and methods include a circuit arrangement for programming a one-time programmable (OTP) memory. The circuit arrangement may include an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating a word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion; encoding logic configured determine whether a word is to be stored inverted or non-inverted; and decoding logic configured to decode a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted. In some embodiments, "n" may be equal to thirty-two. In some embodiments, the OTP memory may include address and control inputs for reading and writing a word.
In some embodiments, the encoding logic may also store a word inverted if the number of bit having a value of T is greater than n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit. In such embodiments, the encoding logic may include an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic Ί ' in the word and operable to control the multiplexer to select the inverted word if the number of logic T in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
In some embodiments, the decoding logic may include an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
In some embodiments, the encoding logic may store a word inverted if the number of bit having a value of Ί ' is greater than or equal to n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
In alternative embodiments, the encoding logic may store a word inverted if the number of bit having a value of T is greater than an inversion threshold and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit. In some embodiments, the systems and methods may include a method for programming a one-time programmable (OTP) memory. The method may include storing a data word in an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating the data word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion; determining whether a word is to be stored inverted or non-inverted; and decoding a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
In some embodiments, storing the data word inverted may include storing the data word inverted if the number of bit having a value of Ί ' is greater than n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
In such embodiments, storing the data word may include storing the data word via encoding logic, wherein the encoding logic comprises an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic Ί ' in the word and operable to control the multiplexer to select the inverted word if the number of logic Ί ' in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
In some embodiments, decoding the stored word may include decoding the stored word via decoding logic, and wherein the decoding logic comprises an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
In some embodiments, the systems and methods may include a computer-implemented method for executing program instructions stored on non-transitory computer-readable media by a processor, wherein the instructions when executed by the processor perform the steps including storing a data word in an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating the data word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non- inverted fashion; determining whether a word is to be stored inverted or non-inverted; and decoding a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted. BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 illustrates an example programming scheme for determining whether to invert the read data to produce original program data, in accordance with certain embodiments of the present disclosure; and Figure 2 illustrates an example table of programming values for programming a scheme for programming a one-time programmable memory, in accordance with certain embodiments of the present disclosure.
DETAILED DESCRIPTION
According to various embodiments, OTP programming time can be minimized by algorithmically selecting between inverted and non-inverted programming Words. In order to put a maximum value to the programming time for the entire array, it is possible to introduce a limiting of the number of bits being programmed to Ί', and therefore a limiting of the total programming time. This is done at the cost of adding one extra OTP bit for each n-bit word (where n bits represents the read/write width of the OTP array). For example, a 32-bit wide OTP array would be updated to be 33 bits wide.
To do this, the extra bit for each word in the OTP array is used to determine whether the corresponding word is an inverted or non-inverted representation of the desired value. When this word is written, the OTP controller (or in this case logic outside the OTP controller) counts the number of Ts in the data to be written. If it is greater than n/2 (i.e., 16 bits for a 32- bit wide OTP array), then the data is inverted before being written into the array, and the (n+ 1) bit (hereafter called the "INV" bit) is written as T. If the number of ' 1 's is less than n/2, then the INV bit is not programmed (i.e., written as Ό').
When any word is written out of the array, the INV bit is read as part of the word, and used to determine whether to invert or not invert the read data to produce the original data that was to be programmed into the array.
Thus, the various embodiments, make use of bit wide programming and odd size OTP memory configurations to implement.
For example, for Novocell OTP arrays, the total programming time for a 32-bit word depends on the number of bits being programmed to Ί ', and is a typical number, as programming of each bit is self-timed within the array. In addition, since the OTP array is manufactured to have an un-programmed state of '0' out of the fab, it is only necessary to program T bits - programming of '0' bits is not necessary and such an operation is effectively skipped within the OTP array. This leads to the situation where the total programming time for an array must be given with a specified "bias" (i.e., how many bits in the array are being programmed to Ί ', and how many bits are programmed to Ό').
In order to put a maximum value to the programming time for the entire array, it is possible to introduce a limiting of the number of bits being programmed to Ί ', and therefore a limiting of the total programming time. According to various embodiments, this can be done at the cost of adding one extra OTP bit for each n-bit word (where n bits represents the read/write width of the OTP array). For example, a 32-bit wide OTP array would be updated to be 33 bits wide.
To do this, the extra bit for each word in the OTP array is used to determine whether the corresponding word is an inverted or non-inverted representation of the desired value. When this word is written, the OTP controller (or in this case logic outside the OTP controller) counts the number of Ts in the data to be written. If it is greater than n/2 (i.e., 16 bits for a 32- bit wide OTP array), then the data is inverted before being written into the array, and the (n+1) bit (hereafter called the "INV" bit) is written as T. If the number of Ί 's is less than n/2, then the INV bit is not programmed (i.e., written as Ό'). Although it is also possible to use the opposite polarity for the INV bit (i.e., INV= 1 indicates that the corresponding word is not inverted), in some configurations for any n-bit binary word, the number of words that need to be inverted under this scheme is less than 50%. If the 1 's count is compared using a less than n/2 function (versus greater than n/2, as described above), then the opposite polarity (i.e., INV= 0 to indicate that the programming word is inverted) would result in the least number of overall programmed bits.
Figure 1 illustrates an example programming scheme 100 for determining whether to invert the read data to produce original program data, in accordance with certain embodiments of the present disclosure. When any word is written out of the array, the INV bit is read as part of the word, and used to determine whether to invert or not invert the read data to produce the original data that was to be programmed into the array. In some embodiments of scheme 100, it may not be necessary to count the entire n-bit word to determine the number of Ί 's, as we only need to determine whether the number is greater than, equal to or less than n/2. To do this, it would be easier to logically OR pairs of bits and then determine if that count is greater than n/4. As an example for a 32-bit OTP array, a system could OR bits 32 and 31, bits 30 and
29, ... , bits 1 and 0, and then count the number of Ί 's in the resulting 16-bit binary number to determine if it is greater than 8. If it is greater than 8, then we would invert the 32-bit word and program INV to T. otherwise, we would not invert the word, and would leave INV un- programmed. In some embodiments, scheme 100 may include an OTP controller 102 communicatively coupled to an OTP array 104. OTP controller 102 may be any appropriate OTP controller such as those found in the Microchip PIC series. OTP array 104 may be any appropriate OTP array such as those found in the Microchip PIC series.
In some embodiments, OTP controller 102 may be communicatively coupled to OTP array 104 through one or more control signals. The number and type of control signals may vary according to the particular configuration of scheme 100. For example, OTP controller 102 may be communicatively coupled to OTP array 104 through a terminal resent (e.g., "RSTN") signal, a command enable (e.g., "CEN") signal, secondary enable (e.g., "WEN") signal, and/or a plurality of address signals (e.g., "A[m:0]. OTP controller 102 may also be communicatively coupled to OTP array 104 through one or more data signals (e.g., "D[31 :0]," which would illustrate a 32-bit data bus), as well as one or more secondary or return data signals (e.g., "Q[31 :0]," which would illustrate a 32-bit data bus).
In some embodiments, the communicative coupling between OTP controller 102 and OTP array 104 may include a plurality of additional components as part of the data transfer. For example, scheme 100 may also include inverter 106, ones counter 108, multiplexor 110, inverter 112, and multiplexor 114. In some embodiments, the data that OTP controller 102 sends through the plurality of data signals may be multiplexed (via multiplexor 110) with an inversion of that same data. That data will have been inverted by inverter 106. The selection of which signal to multiplex at multiplexor 108 may be provided by ones counter 108. Ones counter 108 may be any appropriate circuitry operable to provide a count of the number of "Is" that are stored in the word size being written to OTP array 104 by OTP controller 102. Ones counter 108 may be operable to calculate this number and use it to determine whether the original data or the inverted data is to be written to OTP array 104. In addition, ones counter 108 may output the last logic "1" to be written as the extra bit in each stored word at OTP array 104 In some embodiments, scheme 100 may also include inverter 114 and multiplexor 112.
In some embodiments, the data that OTP array 104 send through the plurality of return data signals (e.g., for a read) may be multiplexed (via multiplexor 112) with an inversion of that same data, as provided by inverter 114. In addition, multiplexor 112 may be switched by a signal from OTP array 104, wherein that signal may be the last, extra bit appended to the end of each word stored in OTP array 104.
Figure 2 illustrates an example table of programming values 200 for programming a scheme 100 for programming a one-time programmable memory, in accordance with certain embodiments of the present disclosure. Table of programming values 200 is provided as an aid in understanding the present disclosure and should not be understood as limiting the present disclosure.
In some embodiments, table 200 may include data column 202, zero bias column 204, inversion indication column 206, and programmed value column 208. Data column 202 includes each potential data for the data value to be programmed according to scheme 100. In the example, data range column 202 indicates only a four-bit range for ease of illustration. More, fewer, and/or different values may be present within any particular configuration without departing from the scope of the present disclosure.
Zero bias column 204 may be used to indicate the percentage of data values at the particular data are zero. Although any number of indication schemes may be used, in the example table 200, zero bias column 204 indicates whether the particular data has less than fifty percent, exactly fifty percent, or greater than fifty percent zero. Inversion indication column 206 may then indicate whether to invert the data at the particular data based at least on whether the zero bias at that data location is over a particular threshold. For example, if the zero bias is greater than fifty percent, then invert the data. Inversion indication column 206 may include a data value associated with a particular data value indicating whether to invert the data. For example, the table may include a "YES" if the data is to be inverted. In other configurations, inversion indication column 206 may include a logical zero for "do not invert" and a logical one for "do invert" or vice versa. Other indication schemes may be available to one of ordinary skill in the art without departing from the scope of the present disclosure.
In some embodiments, table 200 may also include programmed value column 208. Programmed value column 208 may include the value to be written into the specified data by, for example, OTP controller 102. For example, in the first row, table 200 indicates that the value "0000" should be written to the data value. This is because the zero bias is less than fifty percent (as indicated in the first row of zero bias column 204), and thus no inversion has taken place (as indicated in the first row of inversion indication column 206). Other example values are illustrated in Figure 2.
Thus is disclosed a system and method for minimizing OTP programming time algorithmically selecting between inverted and non-inverted programming Words. In order to put a maximum value to the programming time for the entire array, it is possible to introduce a limiting of the number of bits being programmed to Ί', and therefore a limiting of the total programming time. This is done at the cost of adding one extra OTP bit for each n-bit word (where n bits represents the read/write width of the OTP array). For example, a 32-bit wide OTP array would be updated to be 33 bits wide.

Claims

CLAIMS WHAT IS CLAIMED IS:
1. A circuit arrangement for programming a one-time programmable (OTP) memory, comprising:
an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating a word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non-inverted fashion;
encoding logic configured determine whether a word is to be stored inverted or non- inverted; and
decoding logic configured to decode a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
2. The circuit arrangement according to claim 1, wherein the encoding logic stores a word inverted if the number of bit having a value of T is greater than n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
3. The circuit arrangement according to claim 2, wherein the encoding logic comprises an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic Ί ' in the word and operable to control the multiplexer to select the inverted word if the number of logic Ί ' in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
4. The circuit arrangement according to one of the preceding claims, wherein the decoding logic comprises an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
5. The circuit arrangement according to one of the preceding claims, wherein n=32.
6. The circuit arrangement according to one of the preceding claims, wherein the OTP memory comprises address and control inputs for reading and writing a word.
7. The circuit arrangement according to one of the preceding claims, wherein the encoding logic stores a word inverted if the number of bit having a value of Ί ' is greater than
Or equal to n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
8. The circuit arrangement according to one of the preceding claims, wherein the encoding logic stores a word inverted if the number of bit having a value of Ί ' is greater than an inversion threshold and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
9. A method for programming a one-time programmable (OTP) memory, the method comprising:
storing a data word in an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating the data word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non- inverted fashion;
determining whether a word is to be stored inverted or non-inverted; and
decoding a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
10. The method according to claim 9, wherein storing the data word inverted comprises storing the data word inverted if the number of bit having a value of T is greater than n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
11. The method according to claim 10, wherein storing the data word comprises storing the data word via encoding logic, wherein the encoding logic comprises an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic Ί ' in the word and operable to control the multiplexer to select the inverted word if the number of logic Ί ' in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
12. The method according to one of the preceding claims 9-11, wherein decoding the stored word comprises decoding the stored word via decoding logic, and wherein the decoding logic comprises an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
13. The method according to one of the preceding claims 9-12, wherein n=32.
14. The method according to one of the preceding claims 9-13, wherein the OTP memory comprises address and control inputs for reading and writing a word.
15. A computer-implemented method for executing program instructions stored on non-transitory computer-readable media by a processor, wherein the instructions when executed by the processor perform the steps comprising:
storing a data word in an OTP memory array comprising an array organized in lines of n+1 bit, wherein n is an integer number designating the data word size of the OTP memory, wherein the additional bit indicates whether a memory line is stored in an inverted or non- inverted fashion;
determining whether a word is to be stored inverted or non-inverted; and
decoding a stored word and controlled by the additional bit indicating whether a word has been stored inverted or non-inverted.
16. The computer-implemented method according to claim 15, wherein storing the data word inverted comprises storing the data word inverted if the number of bit having a value of Ί ' is greater than n/2 and setting the additional bit in that word and if not then the encoding logic stores a word non-inverted without setting the additional bit.
17. The computer-implemented method according to claim 16, wherein storing the data word comprises storing the data word via encoding logic, wherein the encoding logic comprises an inverter for inverting a word to be stored in the OTP memory, a multiplexer receiving the word and the inverted word, and a counter configured to count the number of logic Ί ' in the word and operable to control the multiplexer to select the inverted word if the number of logic Ί ' in the word is greater than n/2 and otherwise select the word for storage in the OTP memory.
18. The computer-implemented method according to one of the preceding claims 15-17, wherein decoding the stored word comprises decoding the stored word via decoding logic, and wherein the decoding logic comprises an inverter configured to invert a stored n-bit word and a multiplexer receiving the stored word and the inverted word, wherein the multiplexer is controlled by the additional bit.
19. The computer-implemented method according to one of the preceding claims
15-18, wherein n=32.
20. The computer-implemented method according to one of the preceding claims 15-19, wherein the OTP memory comprises address and control inputs for reading and writing a word.
EP16714664.6A 2015-03-20 2016-03-18 One time programmable memory Withdrawn EP3271922A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562136061P 2015-03-20 2015-03-20
US15/072,759 US20160276042A1 (en) 2015-03-20 2016-03-17 One Time Programmable Memory
PCT/US2016/023033 WO2016153965A1 (en) 2015-03-20 2016-03-18 One time programmable memory

Publications (1)

Publication Number Publication Date
EP3271922A1 true EP3271922A1 (en) 2018-01-24

Family

ID=56924875

Family Applications (1)

Application Number Title Priority Date Filing Date
EP16714664.6A Withdrawn EP3271922A1 (en) 2015-03-20 2016-03-18 One time programmable memory

Country Status (7)

Country Link
US (1) US20160276042A1 (en)
EP (1) EP3271922A1 (en)
JP (1) JP2018512689A (en)
KR (1) KR20170130410A (en)
CN (1) CN107430880A (en)
TW (1) TW201643885A (en)
WO (1) WO2016153965A1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10586832B2 (en) 2011-02-14 2020-03-10 Attopsemi Technology Co., Ltd One-time programmable devices using gate-all-around structures
US11062786B2 (en) * 2017-04-14 2021-07-13 Attopsemi Technology Co., Ltd One-time programmable memories with low power read operation and novel sensing scheme
US11615859B2 (en) 2017-04-14 2023-03-28 Attopsemi Technology Co., Ltd One-time programmable memories with ultra-low power read operation and novel sensing scheme
US11163528B2 (en) 2018-11-29 2021-11-02 International Business Machines Corporation Reformatting matrices to improve computing efficiency
US10956361B2 (en) 2018-11-29 2021-03-23 International Business Machines Corporation Processor core design optimized for machine learning applications
US10884918B2 (en) 2019-01-28 2021-01-05 International Business Machines Corporation System implementation of one-time programmable memories
CN113255277B (en) * 2021-05-21 2024-06-14 珠海一微半导体股份有限公司 An OTP controller, integrated circuit and control method thereof
US12483429B2 (en) 2021-06-01 2025-11-25 Attopsemi Technology Co., Ltd Physically unclonable function produced using OTP memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5426609A (en) * 1993-03-16 1995-06-20 Mitsubishi Denki Kabushiki Kaisha Read only memory capable of writing data and method of writing/reading data therefor
US20020188798A1 (en) * 2001-06-07 2002-12-12 Mitsubishi Denki Kabushiki Kaisha Data processor and data processing method reduced in power consumption during memory access

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05298894A (en) * 1992-04-16 1993-11-12 Sharp Corp Non-volatile memory data writing / reading control device
JPH10302490A (en) * 1997-04-25 1998-11-13 Mitsubishi Electric Corp Read-only semiconductor memory device
JPH113594A (en) * 1997-06-12 1999-01-06 Hitachi Ltd Nonvolatile memory and data writing / reading method
JP3881869B2 (en) * 2001-11-05 2007-02-14 株式会社ルネサステクノロジ Semiconductor memory device
US6570795B1 (en) * 2002-04-10 2003-05-27 Hewlett-Packard Development Company, L.P. Defective memory component of a memory device used to represent a data bit in a bit sequence
JP2005116132A (en) * 2003-10-10 2005-04-28 Toshiba Corp Nonvolatile semiconductor memory device
JP4129453B2 (en) * 2004-12-01 2008-08-06 株式会社東芝 Semiconductor memory device, semiconductor memory device operating method, and semiconductor memory device testing method
JP4928830B2 (en) * 2006-05-18 2012-05-09 株式会社東芝 NAND flash memory device and memory device
JP2007323786A (en) * 2006-06-05 2007-12-13 Renesas Technology Corp Semiconductor device
TW200807425A (en) * 2006-06-05 2008-02-01 Renesas Tech Corp Semiconductor device, unique ID of semiconductor device and method for verifying unique ID
JP2008084454A (en) * 2006-09-28 2008-04-10 Sanyo Electric Co Ltd Fuse readout circuit
JP2008123595A (en) * 2006-11-10 2008-05-29 Matsushita Electric Ind Co Ltd Semiconductor memory device
KR100857252B1 (en) * 2007-12-27 2008-09-05 (주)인디링스 Flash memory device and flash memory programming method to level wear at bit level
JP4719236B2 (en) * 2008-03-21 2011-07-06 株式会社東芝 Semiconductor memory device and semiconductor memory system
US7978493B1 (en) * 2008-09-18 2011-07-12 Altera Corporation Data encoding scheme to reduce sense current
US8040730B2 (en) * 2008-11-28 2011-10-18 Samsung Electronics Co., Ltd. Nonvolatile memory device
US8254186B2 (en) * 2010-04-30 2012-08-28 Freescale Semiconductor, Inc. Circuit for verifying the write enable of a one time programmable memory
JP5337277B1 (en) * 2012-05-14 2013-11-06 株式会社東芝 Magnetic random access memory and memory system
JP2015099624A (en) * 2013-11-19 2015-05-28 株式会社東芝 Semiconductor memory device
US10331999B2 (en) * 2017-04-03 2019-06-25 Gyrfalcon Technology Inc. Memory subsystem in CNN based digital IC for artificial intelligence

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5426609A (en) * 1993-03-16 1995-06-20 Mitsubishi Denki Kabushiki Kaisha Read only memory capable of writing data and method of writing/reading data therefor
US20020188798A1 (en) * 2001-06-07 2002-12-12 Mitsubishi Denki Kabushiki Kaisha Data processor and data processing method reduced in power consumption during memory access

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of WO2016153965A1 *

Also Published As

Publication number Publication date
US20160276042A1 (en) 2016-09-22
WO2016153965A1 (en) 2016-09-29
JP2018512689A (en) 2018-05-17
TW201643885A (en) 2016-12-16
CN107430880A (en) 2017-12-01
KR20170130410A (en) 2017-11-28

Similar Documents

Publication Publication Date Title
US20160276042A1 (en) One Time Programmable Memory
US8599613B2 (en) Nonvolatile semiconductor memory
KR100885783B1 (en) Flash memory device and operation method
US10566060B2 (en) Memory device and program/erase method therefor
US7808825B2 (en) Non-volatile memory device and method of programming the same
KR101950758B1 (en) Semiconductor device
US9324407B2 (en) Semiconductor apparatus capable of preventing refresh error and memory system using the same
US7254086B2 (en) Method for accessing memory
US9535785B2 (en) ECC method for flash memory
CN112309473B (en) Storage devices that perform stateful shaping of data
JP4455524B2 (en) Method and nonvolatile storage device for storing state information using a plurality of strings
KR20180000593A (en) Method of correcting error of data and memory device thereof
CN112017724B (en) Memory system and method for correcting errors in the memory system
KR20100031402A (en) Method and apparatus for detecting free page and error correction code decoding method and apparatus using the same
EP3057100B1 (en) Memory device and operating method of same
CN108664362A (en) Processing method, Memory Controller Hub and the user equipment of memory mirror
KR20150072043A (en) Semiconductor device
US9104596B2 (en) Memory system
US9159457B2 (en) Non-volatile memory device for storing write data having different logic levels
US10409735B2 (en) Electronic device and data exchange method including protocol indicative of modes of operation
KR20090048142A (en) ECC processing unit of the nonvolatile memory device
KR101081879B1 (en) Programming method of non volatile memory device
TWI505278B (en) Semiconductor memory device
JP2019046525A (en) Memory device
JP2013218525A (en) Semiconductor memory system, memory controller, and memory control method

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20171018

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20200821

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20210302