Embodiments described herein relate generally to a memory system including a nonvolatile memory and a method of controlling a nonvolatile memory.
In a storage device including a semiconductor memory such as a NAND flash memory, in order to cope with a temperature change, various control processes are executed.
In general, according to one embodiment, a memory system includes a nonvolatile memory and a controller. The nonvolatile memory includes a plurality of blocks. The plurality of blocks includes a plurality of first blocks and at least one second block. Each second block includes a plurality of memory cells capable of storing data of one bit. In a case where a first temperature that is a temperature of the nonvolatile memory is within a certain range, the controller writes first data requested to be written from a host into one of the first blocks. In a case where the first temperature is out of the certain range, the controller determines a first value of a third block. the third block is a block selected from among the first blocks. the first value is a degree of wear. In a case where the first value of the third block is more than a threshold, the controller writes the first data into the second block. In a case where the first value of the third block is less than the threshold, the controller writes the first data into the third block.
Exemplary embodiments of memory system and a method of controlling a nonvolatile memory will be explained below in detail with reference to the accompanying drawings. The present invention is not limited to the following embodiments.
The memory system 100 includes: a NAND flash memory (hereinafter, abbreviated as a NAND) 10 as a nonvolatile memory; and a memory controller 2. The nonvolatile memory device is not limited to the NAND flash memory but may be a flash memory having a three-dimensional structure, a resistance random access memory (ReRAM), a ferroelectric random access memory (FeRAM), or the like.
The NAND 10 includes one or more memory chips cp each including a memory cell array. The memory cell array includes a plurality of memory cells arranged in a matrix pattern. The memory cell array includes a plurality of blocks that are units for data erasing. Each block is configured by a plurality of physical sectors MS (see
The memory cell array that is the premise of this embodiment is not particularly limited to a specific configuration but may be a memory cell array having a two-dimensional structure as illustrated in
Word lines WL0 to WLn are respectively connected to control gate electrodes of the memory cell transistors MT0 to MTn that configure the NAND string NS, and, memory cell transistors MTi (here, i=0 to n) included in each NAND string NS are connected to be common using the same word line WLi (here, i=0 to n). In other words, the control gate electrodes of the memory cell transistors MTi disposed in the same row within the block BLK are connected to the same word line WLi.
Each of the memory cell transistors MT0 to MTn is configured by a field effect transistor having a stacked gate structure formed on a semiconductor substrate. Here, the stacked gate structure includes: a charge storage layer (floating gate electrode) formed on the semiconductor substrate with a gate insulating film being interposed therebetween; and a control gate electrode formed on the charge storage layer with an inter-gate insulating film being interposed therebetween. A threshold voltage of each of the memory cell transistors MT0 to MTn changes according to the number of electrons that is stored in the floating gate electrode and thus, can store data according to a difference in the threshold voltage.
Bit lines BL0 to BLm are respectively connected to the drains of (m+1) selection transistors ST1 within one block BLK, and a selection gate line SGD is connected to be common to the gates of the selection transistors. In addition, the source of the selection transistor ST1 is connected to the drain of the memory cell transistor MT0. Similarly, a source line SL is connected to be common to the sources of the (m+1) selection transistors ST2 within one block BLK, and a selection gate line SGS is connected to be common to the gates of the selection transistors. In addition, the drain of the selection transistor ST2 is connected to the source of the memory cell transistor MTn.
Each memory cell is connected not only to the word line but also to the bit line. Each memory cell can be identified by using an address used for identifying a word line and an address used for identifying a bit line. As described above, the data of the memory cells (the memory cell transistors MT) disposed within the same block BLK is erased altogether. On the other hand, data is written and read in units of physical sectors MS. One physical sector MS includes a plurality of memory cells connected to one word line.
Each memory cell can perform multi-value storage. In a case where the memory cells are operated in a single level cell (SLC) mode, one physical sector MS corresponds to one page. On the other hand, in a case where the memory cells are operated in a multiple level cell (MLC) mode, one physical sector MS corresponds to N pages (here, N is a natural number of two or more). In descriptions presented here, the term MLC mode is assumed to include a triple level cell (TLC) mode of N=3.
In a read operation and a program operation, one word line is selected according to the physical address, and one physical sector MS is selected. A switching of the page within this physical sector MS is performed using the physical address.
As illustrated in the figure, the block BLK, for example, includes four fingers FNG (FNG0 to FNG3). In addition, each finger FNG includes a plurality of NAND strings NS. Each NAND string NS, for example, includes eight memory cell transistors MT (MT0 to MT7) and selection transistors ST1 and ST2. Here, the number of memory cell transistors MT is not limited to eight. The memory cell transistor MT is arranged between the selection transistors ST1 and ST2 such that the current paths thereof are connected in series. The current path of the memory cell transistor MT7 disposed on one end side of the series connection is connected to one end of the current path of the selection transistor ST1, and the current path of the memory cell transistor MT0 disposed on the other end side is connected to one end of the current path of the selection transistor ST2.
The gates of the selection transistors ST1 of the fingers FNG0 to FNG3 are commonly connected respectively to selection gate lines SGD0 to SGD3. On the other hand, the gates of the selection transistors ST2 are commonly connected to the same selection gate line SGS among a plurality of fingers FNG. In addition, the control gates of the memory cell transistors MT0 to MT7 disposed inside a same block BLK0 are commonly connected to word lines WL0 to WL7. In other words, while the word lines WL0 to WL7 and the selection gate lines SGS are commonly connected among the plurality of fingers FNG0 to FNG3 disposed inside a same block BLK, the selection gate line SGD is independent for each of the fingers FNG0 to FNG3 also inside the same block BLK.
The word lines WL0 to WL7 are connected to the control gate electrodes of the memory cell transistors MT0 to MT7 configuring the NAND string NS, and the memory cell transistors MTi (i=0 to n) of each NAND string NS are commonly connected by a same word line WLi (i=0 to n). In other words, the control gate electrodes of the memory cell transistors MTi disposed in the same row disposed inside the block BLK are connected to a same word line WLi.
Each memory cell is connected to a word line and a bit line. Each memory cell can be identified by using an address used for identifying a word line and an address used for identifying a bit line. As described above, data of memory cells (memory cell transistors MT) disposed inside a same block BLK is erased together. On the other hand, data reading and data writing are executed in units of physical sectors MG. One physical sector MG includes a plurality of memory cells that are connected to one word line WL and belong to one finger FNG.
Each memory cell can store a multi-value. In a case where a memory cell is operated in a single level cell (SLC) mode, one physical sector MG corresponds to one page. On the other hand, in a case where a memory cell is operated in a multi-level cell (MLC) mode, one physical sector MG corresponds to N pages (here, N is a natural number of two or more). In description here, the term MLC mode is assumed to include a triple level cell (TLC) mode in which N=3.
When a read operation or a program operation is executed, one word line is selected according to a physical address, whereby a plurality of physical sectors MG are selected. A switching of the page within these physical sectors MG is performed using the physical address.
A memory hole 334 that arrives at the P-well region through such wiring layers 333, 332, and 331 is formed. On the side face of the memory hole 334, a block insulating film 335, an electric charge accumulating layer 336, and a gate insulating film 337 are sequentially formed, and a conductive film 338 is embedded inside the memory hole 334. The conductive film 338 functions as a current path of the NAND string NS and is an area in which a channel is formed when the memory cell transistors MT and the selection transistors ST1 and ST2 operate.
In each NAND string NS, the selection transistor ST2, a plurality of the memory cell transistors MT, and the selection transistor ST1 are sequentially stacked on the P-well region. At the upper end of the conductive film 338, a wiring layer serving as a bit line BL is formed.
In addition, an n+ type impurity diffusion layer and a p+ type impurity diffusion layer are formed inside the front face of the P-well region. A contact plug 340 is formed on the n+ type impurity diffusion layer, and a wiring layer serving as a source line SL is formed on the contact plug 340. In addition, a contact plug 339 is formed on the p+ type impurity diffusion layer, and a wiring layer serving as a well wiring CPWELL is formed on the contact plug 339.
A plurality of the configurations illustrated in
In the configuration illustrated in
Each chip cp includes a temperature sensor 15. The temperature sensor 15 measures the temperature of the memory cell array disposed in each chip. Temperature information TC measured by the temperature sensor 15 is output to the memory controller 2 and is used for temperature control that is executed by the memory controller 2.
In each chip cp, a user data area 10a in which user data is stored includes an MLC area 10m, an SLC area 10s, and a saving area 10g. The MLC area 10m includes a plurality of MLC blocks. The MLC block is a block that operates in the MLC mode. The SLC area 10s includes one or a plurality of SLC blocks. The SLC block is a block that operates in the SLC mode. The SLC area 10s functions as an internal data buffer of the NAND 10. Random write data among write data specified by a write request from the host 1 is stored in the SLC area 10s. In a case where the SLC area 10s is full of data, the data of the SLC area 10s is moved to the MLC area 10m. On the other hand, sequential write data among write data specified by a write request from the host 1 is stored in the MLC area 10m.
The saving area 10g includes one or a plurality of SLC blocks. When the inside of the chip is at an abnormal temperature, write data specified by a write request from the host 1 is written into a block (saving block) disposed inside the saving area 10g. A condition for the use of the saving area 10g will be described below in detail. The saving area 10g is used only when the inside of the chip is at an abnormal temperature. That is, the saving area 10g includes one or a plurality of dedicated blocks that are only used as a writing destination at the time of a temperature abnormality. For this reason, a block disposed inside the saving area 10g has a fewer number of times of rewriting than a block disposed inside the SLC area 10s or the MLC area 10m and a degree of wear smaller than that of a block disposed inside the SLC area 10s or the MLC area 10m. In description presented here, a large degree of wear corresponds to the progress of wear, and a small degree of wear corresponds to no progress of wear.
The memory controller 2 includes: a host interface 3; a memory interface 40; a RAM 30; and the control unit 20. In this embodiment, while the RAM 30 is provided inside the memory controller 2, the RAM 30 may be provided outside the memory controller 2. The host I/F 3 outputs a command, user data (write data), and the like received from the host 1 to an internal bus 4. In addition, the host I/F 3 transmits the user data read from the NAND 10, a response from the control unit 20, and the like to the host 1. The memory I/F 40 directly controls the NAND 10 based on an instruction from the control unit 20.
The RAM 30 is a volatile semiconductor memory that can be accessed at a higher speed than the NAND 10. The RAM 30 includes a storage area as a data buffer 31. Data received from the host 1 is temporarily stored in the data buffer 31 before being written into the NAND 10. Data read from the NAND 10 is temporarily stored in the data buffer 31 before being transmitted to the host 1. The management information stored in the NAND 10 is loaded into the RAM 30. Management information 32 loaded into the RAM 30 is backed up into the NAND 10. The RAM 30 also functions as a buffer in which the firmware stored in the NAND 10 is loaded. As the RAM 30, a static random access memory (SRAM) or a dynamic random access memory (DRAM) is used.
The control unit 20 includes: a command processing unit 21; a block management unit 22, an ECC unit 23; a temperature control unit 24; and a garbage collection (GC) control unit 25. The function of the control unit 20 is realized by one or a plurality of CPUs (processors) executing firmware loaded in the RAM 20 and peripheral circuits thereof. The function of the command processing unit 21 is realized by a CPU and/or hardware that executes firmware. The function of the block management unit 22 is realized by a CPU and/or hardware that execute firmware. The function of the ECC unit 23 is realized by a CPU and/or hardware that execute firmware. The function of the temperature control unit 24 is realized by a CPU and/or hardware that execute firmware. The function of the garbage collection (GC) control unit 25 is realized by a CPU and/or hardware that execute firmware.
The command processing unit 21 executes a process corresponding to a command received from the host 1. For example, in a case where a write request is received from the host 1, the command processing unit 21 temporarily stores write data in the data buffer 31. When the data buffer 31 is full, for example, the command processing unit 21 reads data stored in the data buffer and writes the read data into the NAND 10 through the ECC unit 23 and the memory I/F 40.
On the other hand, in a case where a read request is received from the host 1, the command processing unit 21 instructs the memory I/F 40 to read data from the NAND 10. The memory I/F 40 temporarily stores the data read from the NAND 10 in the data buffer 31 through the ECC unit 23. The command processing unit 21 transmits the read data stored in the data buffer 31 to the host 1 through the host I/F 3.
The command processing unit 21 manages the user data by using a logical/physical translation table that is included in the management information 32 that is loaded into the RAM 30. In the logical/physical translation table, mapping associating a logical address used by the host 1 with the physical address of the RAM 20 or the NAND 10 is registered. As the physical address, for example, logical block addressing (LBA) is used. The physical address represents a storage position on the RAM 20 or the NAND 10 at which the data is stored.
The block management unit 22 executes the management of blocks included in the NAND 10 by using the block management table that is included in the management information 32 loaded in the RAM 30. In the block management table, for example, the following block management information is managed.
The number of times of erasing (Erase Count) in units of blocks
Information representing whether a block is an active block or a free block
Block address of a bad block
An active block is a block in which valid data is recorded. A free block is a block in which valid data has not been recorded and is reusable after erasing the data. The valid data is data associated with a logical address, and invalid data is data not associated with a logical address. When data is written into a free block after erasing data stored therein, the free block becomes an active block. A bad block is an unusable block that does not normally operate due to various factors.
The ECC unit 23 executes an error correction coding process for data transmitted from the data buffer 31, thereby generating a parity. The ECC unit 23 outputs a code word including data and a parity to the memory I/F 40. The memory I/F 40 inputs the code word read from the NAND 10 to the ECC unit 23. The ECC unit 23 executes an error correction decoding process by using the input code word and transmits decoded data to the data buffer 31.
The GC control unit 25 controls garbage collection (compaction). In the memory system 100, in a case where a data erase unit (block) and a data read/write unit are different from each other, when the rewriting process for the NAND 10 proceeds, a block is fragmented due to invalid data. When the number of such fragmented blocks increases, the number of usable blocks decreases. Thus, for example, in a case where the number of free blocks of the NAND 10 is less than a certain threshold, the garbage collection (compaction) is executed, whereby the number of free blocks is increased. In the garbage collection, from blocks (GC source blocks) in which valid data and invalid data are included, the valid data is collected and is rewritten into blocks (GC destination blocks) of which data has been newly erased.
The temperature control unit 24 acquires the temperature information TC acquired by the temperature sensor 15 of each chip cp of the NAND 10 through the memory I/F 40. The temperature control unit 24 perceives a temperature state of each chip cp based on the temperature information TC of each chip. The temperature information TC of each chip cp may be spontaneously output from each chip cp to the memory controller 2 or may be output from each chip cp to the memory controller 2 in response to a request from the memory controller 2. In the latter case, a command used for acquiring the temperature information TC is transmitted from the memory controller 2 to each chip cp, and each chip cp transmits the temperature information TC to the memory controller 2 as a response to the command. In a case where the temperature of each chip is out of a certain range, in other words, when the temperature of each chip is over an upper limit or a lower limit, the temperature control unit 24 notifies the command processing unit 21 and the block management unit 22 of an occurrence of a temperature abnormality and a chip ID of the chip of which the temperature is abnormal. Here, the upper limit and the lower limit used for determining a temperature abnormality may be set to be different for each chip. Based on such a notification, the command processing unit 21 and the block management unit 22 can perceive an occurrence of a temperature abnormality and a chip ID of a chip of which the temperature is abnormal.
When the temperature of the inside of the chip is out of the certain range, there is a possibility that a block of a target for writing write data is a block disposed inside the saving area 10g. The temperature control unit 24 manages the saving blocks disposed inside the saving area 10g in cooperation with the block management unit 22.
In a case where the temperature of the memory chip that is the writing destination is within a certain range (Step S11: No), the command processing unit 21 executes a normal write sequence. For example, the command processing unit 21 determines whether or not a write request of this time is random write or sequential write based on the continuity of logical addresses specified by the write command (Step S12). In a case where the random write is determined (Step S12: Yes), the command processing unit 21 sets the writing destination of data to the SLC area 10s. In other words, the command processing unit 21 executes control of the ECC unit 23 and the memory I/F 40 such that an SLC block into which data is to be written from the SLC area 10s of the selected memory chip is selected, and the data specified by the write command and a parity are written into the selected SLC block.
Accordingly, a code word corresponding to the data specified by the write command is programmed into the SLC block of the SLC area 10s (Step S13). According to this data writing, the logical/physical translation table and the block management table are updated.
In a case where the sequential write is determined (Step S12: No), the command processing unit 21 sets the writing destination of the data to the MLC area 10m. In other words, the command processing unit 21 executes control of the ECC unit 23 and the memory I/F 40 such that an MLC block into which data is to be written from the MLC area 10m of the selected memory chip is selected, and the data specified by the write command and a parity are written into the selected MLC block. Accordingly, a code word corresponding to the data specified by the write command is programmed into the MLC block (Step S14). According to this data writing, the logical/physical translation table and the block management table are updated.
In a case where the temperature of the memory chip that is the writing destination is out of a certain range (Step S11: Yes), the command processing unit 21 determines whether or not a write request of this time is random write or sequential write based on the continuity of logical addresses specified by the write command, as described above (Step S15). In a case where the random write is determined (Step S15: Yes), the command processing unit 21 selects an SLC block into which data is to be written from the SLC area 10s of the selected memory chip. The command processing unit 21 determines a degree of wear of the selected SLC block based on the degree of wear management table illustrated in
In a case where the acquired erase count is more than the threshold C1 (Step S16: Yes), the command processing unit 21 sets the writing destination of the data to the saving area 10g. In other words, the command processing unit 21 executes control of the ECC unit 23 and the memory I/F 40 such that a saving block into which data is to be written is selected from the saving area 10g of the selected memory chip, and the data specified by the write command and a parity are written into the selected saving block. Accordingly, a code word corresponding to the data specified by the write command is programmed into the saving block of the saving area 10g (Step S18). According to this data writing, the logical/physical translation table, the block management table, and the saving block management table illustrated in
In a case where the sequential write is determined (Step S15: No) as a result of the determination made in Step S15, the command processing unit 21 selects an MLC block as a candidate for a data writing destination from the MLC area 10m of the selected memory chip. The command processing unit 21 determines a degree of wear of the selected MLC block based on the degree of wear management table illustrated in
In a case where the acquired erase count is more than the threshold C2 (Step S17: Yes), the command processing unit 21 sets the writing destination of the data to the saving area 10g. In other words, the command processing unit 21 executes control of the ECC unit 23 and the memory I/F 40 such that an SLC block into which data is to be written is selected from the saving area 10g of the selected memory chip, and the data specified by the write command and a parity are written into the selected SLC block. Accordingly, a code word corresponding to the data specified by the write command is programmed into the SLC block of the saving area 10g (Step S18). According to this data writing, the logical/physical translation table, the block management table, and the saving block management table illustrated in
In the embodiment described above, while the writing block has been switched based on whether the write request is either the random write or the sequential write, such a control process may not be executed. In such a case, in a case where a temperature abnormality occurs, a degree of wear of a block of the writing destination of data specified by the write command is determined. Then, in a case where the degree of wear is more than a threshold, the data is written into a saving block (SLC block) of the saving area 10g. On the other hand, in a case where the degree of wear is less than the threshold, the data is written into the block of the writing destination.
Here, the thresholds C1 and C2 may be set to be different for each chip.
In this way, in the embodiment, in a case where a temperature abnormality occurs, a degree of wear of a block of the writing destination of data specified by a write command is determined. Then, in a case where the degree of wear is larger than the threshold, the data is written into an SLC block of the saving area 10g that is especially prepared as a writing destination at the time of a temperature abnormality. The SLC block of the saving area 10g is used only when a temperature abnormality occurs. For this reason, the SLC block of the saving area 10g has a degree of wear smaller than the block of the SLC area 10s or the MLC area 10m and has reliability higher than the block of the SLC area 10s or the MLC area 10m. For this reason, also under an abnormal temperature environment, data maintaining characteristic having high reliability can be acquired.
Next, moving of data stored in the saving area 10g will be described. Since the data stored in the saving area 10g is programmed under an abnormal temperature environment, the data stored in the saving area 10g is moved to a normal storage area at appropriate timing, and the data programmed in the abnormal temperature environment is protected. In this embodiment, the data stored in the saving area 10g is moved to the MLC area 10m.
When a garbage collection start condition is satisfied (Step S20), the GC control unit 25 notifies the satisfaction of the garbage collection start condition to the temperature control unit 24. The temperature control unit 24 perceives a temperature state of each chip cp based on the temperature information TC acquired from each chip and determines whether the temperature of each chip is within a certain range (normal temperature) (Step S30). In a case where the temperature of each chip is within the certain range, the temperature control unit 24 recognizes the number of pieces of valid data stored in the saving block of each chip based on the saving block management table illustrated in
In a case where the saving area 10g includes a plurality of saving blocks, the data moving may be executed when one or a plurality of saving blocks are full of data, or the data moving may be executed when all the saving blocks are full of data.
In addition, in the examples illustrated in
In this way, in the embodiment, data written into the saving area 10g under an abnormal temperature environment is moved to the MLC area 10m, and accordingly, data programmed under an abnormal temperature environment can be protected.
A second embodiment will be described with reference to
In the temperature coefficient management table, temperature coefficients TCO_K1 to TCO_K6 are set to the states A to F. In the example illustrated in
The I/O controller 201, based on an input signal IN, outputs a command transmitted from the memory controller 2 to the command/signal buffer 202 and outputs an address to the address buffer 203. In addition, the I/O controller 201 transmits data to the page buffer 210 at the time of writing the data and receives data from the page buffer 210 at the time of reading the data.
The command/signal buffer 202 decodes a command and outputs an instruction used for realizing an operation (for example, a read operation, a write operation, an erasing operation, or the like) represented by the command to the voltage controller 204. The address buffer 203 decodes an address and outputs the address the driver 206.
The voltage controller 204 controls an access operation for accessing the memory cell array 209 according to an instruction of the command transmitted from the command buffer 202.
The voltage generator 205, for example, generates a program voltage CGPV used for realizing a program operation based on a control signal CGPVDAC transmitted from the voltage controller 204. The voltage generator 205, for example, generates a read voltage CGRV used for realizing a reading operation based on a control signal CGRVDAC transmitted from the voltage controller 204. The driver 206 controls the operations of the sense amplifier 207, the decoder 208, and the memory cell array 209 based on an address transmitted from the address buffer 203 and an instruction transmitted from the voltage controller 204.
The temperature sensor 15 senses the temperature of the memory chip cp and outputs temperature information TC to the voltage controller 204. The temperature information TC is input to the memory controller 2 through the I/O controller 201.
The voltage controller 204 includes a table 213 in which a temperature coefficient and other parameter values are registered. The temperature coefficient registered in the table 213 can be changed using a command supplied from the memory controller 2. The temperature coefficient registered in the table 213 of each memory chip cp, for example, is the temperature coefficient TCO_K4 set in correspondence with the state D (the chip temperature is a normal temperature, and the degree of wear of the chip is small) registered in the temperature coefficient management table illustrated in
At the time of programming, the voltage controller 204 acquires a temperature coefficient from the table 213, corrects a control signal CGPVDAC used for generating a program voltage by using the acquired temperature coefficient, and outputs the corrected control signal CGPVDAC. In addition, at the time of reading data, the voltage controller 204 acquires a temperature coefficient from the table 213, corrects a control signal CGRVDAC used for generating a read voltage by using the acquired temperature coefficient, and outputs the corrected control signal CGRVDAC.
In addition, the temperature control unit 26 determines whether the degree of wear of the memory chip cp is large or small (Step S61). The degree of wear of the memory chip is calculated by using the number of times of erase of one or a plurality of blocks disposed inside the memory chip. For example, in order to calculate the degree of wear of the memory chip, the numbers of times of erase of all the blocks included in the memory chip may be acquired. In addition, the degree of wear of the memory chip may be calculated based on the number of times of erase of one or a plurality of certain blocks selected in advance as sampling targets. For example, the numbers of times of erase of a plurality of blocks that are sampling targets are acquired, and an average value or a maximum value thereof is set as the degree of wear of the memory chip.
The temperature control unit 26 determine one of the states A to F to which the memory chip belongs based on the temperature and the degree of wear that have been determined and acquires a temperature coefficient corresponding to the determined state from the temperature coefficient management table illustrated in
In this way, in the second embodiment, the temperature coefficient set inside the memory chip is changed based on the temperature inside of the memory chip and the degree of wear of the memory chip. For this reason, a data maintaining characteristic having high reliability can be acquired by controlling the program voltage or the reading voltage inside the NAND 10 based on the temperature and the degree of wear.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
This application is based upon and claims the benefit of priority from U.S. Provisional Application No. 62/210,754, filed on Aug. 27, 2015; the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62210754 | Aug 2015 | US |