LOGIC ENCRYPTION USING ON-CHIP MEMORY CELLS
A protected circuit includes a logic circuit having one or more input nodes and one or more output nodes. The logic circuit has a network of logic elements and one or more logic encryption elements. A logic encryption element includes a memory cell, such as a correlated electron switch for example, coupled with a configurable sub-circuit that is configured by a value stored in the memory cell to encrypt a signal or a signal path. A mapping of values at the one or more input nodes to values at the one or more output nodes corresponds to a desired mapping when values stored in the one or more memory cells match component values of a prescribed key vector. The memory cells may be programmed after fabrication of the circuit.
Latest ARM Limited Patents:
The present disclosure relates to the encryption of logic circuits using on-chip memory cells.
BACKGROUNDElectronic integrated circuits are subject to reverse engineering, copying and theft of intellectual property rights. An integrated circuit with encrypted logic is designed to function correctly only when certain signals, representing key values, are provided as inputs. The key values are typically stored off-chip and read to on-chip registers or flip-flops during a power-on or boot-up sequence. The key values may be stored in E-fuses, for example. Without the correct key values the circuit will not function as designed, in that a given input may produce an incorrect output. However, such an approach is vulnerable to attack as the key values may be exposed to an attacker as they are read into the chip.
While this invention is susceptible of embodiment in many different forms, there is shown in the drawings and will herein be described in detail specific embodiments, with the understanding that the present disclosure is to be considered as an example of the principles of the invention and not intended to limit the invention to the specific embodiments shown and described. In the description below, like reference numerals may be used to describe the same, similar or corresponding parts in the several views of the drawings.
In this document, relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element preceded by “comprises . . . a” does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element.
Reference throughout this document to “one embodiment,” “certain embodiments,” “an embodiment,” “implementation(s),” “aspect(s),” or similar terms means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. Thus, the appearances of such phrases or in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments without limitation.
The term “or” as used herein is to be interpreted as an inclusive or meaning any one or any combination. Therefore, “A, B or C” means “any of the following: A; B; C; A and B; A and C; B and C; A, B and C.” An exception to this definition will occur only when a combination of elements, functions, steps or acts are in some way inherently mutually exclusive. Also, grammatical conjunctions are intended to express any and all disjunctive and conjunctive combinations of conjoined clauses, sentences, words, and the like, unless otherwise stated or clear from the context. Thus, the term “or” should generally be understood to mean “and/or” and so forth.
All documents mentioned herein are hereby incorporated by reference in their entirety. References to items in the singular should be understood to include items in the plural, and vice versa, unless explicitly stated otherwise or clear from the text.
Recitation of ranges of values herein are not intended to be limiting, referring instead individually to any and all values falling within the range, unless otherwise indicated, and each separate value within such a range is incorporated into the specification as if it were individually recited herein. The words “about,” “approximately,” “substantially,” or the like, when accompanying a numerical value, are to be construed as indicating a deviation as would be appreciated by one of ordinary skill in the art to operate satisfactorily for an intended purpose. Ranges of values and/or numeric values are provided herein as examples only, and do not constitute a limitation on the scope of the described embodiments. The use of any and all examples, or exemplary language (“e.g.,” “such as,” or the like) provided herein, is intended merely to better illuminate the embodiments and does not pose a limitation on the scope of the embodiments. No language in the specification should be construed as indicating any unclaimed element as essential to the practice of the embodiments.
For simplicity and clarity of illustration, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. Numerous details are set forth to provide an understanding of the embodiments described herein. The embodiments may be practiced without these details. In other instances, well-known methods, procedures, and components have not been described in detail to avoid obscuring the embodiments described. The description is not to be considered as limited to the scope of the embodiments described herein.
In the following description, it is understood that terms such as “first,” “second,” “top,” “bottom,” “up,” “down,” “above,” “below,” and the like, are words of convenience and are not to be construed as limiting terms. Also, the terms apparatus and device may be used interchangeably in this text.
As utilized herein, the terms “coupled”, “connected,” and/or similar terms are used generically. It should be understood that these terms are not intended as synonyms. Rather, “connected” is used generically to indicate that two or more components, for example, are in direct physical, including electrical, contact; while, “coupled” is used generically to mean that two or more components are potentially in direct physical, including electrical, contact; however, “coupled” is also used generically to also mean that two or more components are not necessarily in direct contact, but nonetheless are able to co-operate and/or interact. The term “coupled” is also understood generically to mean indirectly connected, for example, in an appropriate context.
The various embodiments and examples of the present disclosure as presented herein are understood to be illustrative of the present disclosure and not restrictive thereof and are non-limiting with respect to the scope of the present disclosure.
Further particular and preferred aspects of the present disclosure are set out in the accompanying independent and dependent claims. Features of the dependent claims may be combined with features of the independent claims as appropriate, and in combinations other than those explicitly set out in the claims.
The present disclosure relates to a technique for protecting an integrated circuit from theft. The circuit is protected by the inclusion of one or more logic encryption elements.
Elements 106, 308 and 406 are examples of configurable sub-circuits. Each configurable sub-circuit that is configured by a value stored in the memory cell. These configurable sub-circuits are shown by way of example only. Other configurable sub-circuits may be provided by combining one or more memory cells with logic gates, multiplexers and switches, for example.
A mapping of values at the one or more input nodes 502 to values at the one or more output nodes 504 corresponds to a desired mapping when values stored in the plurality of memory cells match component values of a prescribed key vector.
The above examples show how logic encryption elements comprising a memory cell, and a configurable sub-circuit, may be inserted into a logic circuit. The function of the logic circuit is dependent upon key values stored in the memory cells. The logic circuit functions as desired, i.e. is unlocked, when all of the key values are correct. Otherwise the logic circuit is locked and does not function as desired.
Any number of logic encryption elements may be inserted. For example, 256 or 512 elements may be used, making it highly improbable that the correct key values may be found by chance or by systematic testing.
In the examples above, a logic encryption element is used either to encrypt a signal (as in the case of an XOR or XNOR sub-circuit) or to encrypt a signal pathway (as in the case of a multiplexer or sub-circuit 406). Both types of encryptions, and combinations thereof, may be used in the same circuit. A logic encryption element may have single or multiple inputs and may have single or multiple outputs. Further, a logic encryption element may have one or more memory cells for configuring the sub-circuit of the logic encryption element.
In order to unlock logic circuit 902, the correct key vector must be written to memory cells 914. In the embodiment shown, a programming signal 918 is provided to interface 920. The interface may be a Joint Test Action Group (JTAG) interface, a serial interface or the like. Interface 920 may be used to send key values to write circuit 922 that, in turn, is controlled to write the values to memory cells 914. The memory cells may be programmed one at time, in groups, or all together. Output 924 from interface 920 may be used to ‘daisy chain’ two or more circuits.
In some embodiments, memory cells 914 provide non-volatile memory. The cells may be programmed once, at a trusted site for example. After the correct key vector is programmed, the circuit will function correctly when the circuit leaves the trusted site. In contrast to other approaches, no key values are transferred to integrated circuit during a boot-up or power-up operation, making it much more difficult for an attacker to determine the correct key vector.
An advantage of the disclosed encrypted logic circuit is that the semiconductor fabrication plant or foundry need not be a trusted site, since devices are fabricated in a locked state and do not function correctly.
In accordance with embodiments of the disclosure, a memory cell of a logic encryption element may be a non-volatile memory cell that includes a Correlated Electron Switch (CES). A CES-based memory cell uses a material, such as a transition metal oxide (TMO), which exhibits an abrupt state transition from low resistance to high resistance. The TMO may be Nickel Oxide (NiO), for example. In contrast to other resistive memory devices, the state transition arises from electron correlations in the material, rather than from any solid state structural phase change. The transition may be controlled by a voltage and current applied across the material.
In the high resistance state, CES may have a resistance value of the order of 10 MΩ, for example. In the low resistance state, CES may have a resistance of the order of 100 KΩ, for example. A CES is born in a low resistance state, that is, the doping of the transition-metal oxide (TMO) creates both electrons and holes. However, the doping is still p-type (defined by moving the Fermi level down in energy). The electrons are well screened in that there is no band-splitting, but are well above this new Fermi level. Therefore, the electrons do not contribute to transport. In the initial state, there is a large surplus of electrons in the correlated electron material which do not contribute to current. When bias is applied, hole injection occurs causing a hole current. When sufficient bias is applied (greater than the band-splitting potential) a Mott transition occurs. The transition occurs when the number of injected holes equals the number of electrons trapped in the system. The material in the CES changes from a metal state to the insulator state via the Mott transition. At this point, the electrons are no longer screened and become localized. This correlation splits the bands causing the material to have a very high resistance. In this state transport is still via holes. If enough bias is applied, electrons are injected. When enough electrons have been injected and enough potential is applied to overcome the set potential criteria, the increase in electrons screens the electrons and removes the localization, collapsing the band-splitting potential and forming a metal or low resistance material. The electrons injection into the system is controlled by the compliance of the system. The compliance therefore sets the number of electrons in the system that need to be “captured” by holes for the Mott transition to occur.
Correlated electron materials may be used in memory devices and switches. The resistance state of a CES may be used to designate a stored data value, which may be read in a variety of ways. Data may be written to a CES-based memory device using a variety of methods examples of which can be are described in co-owned U.S. patent application Ser. No. 14/826,064, “Programmable Voltage For Correlated Electron Switch” and/or co-owned U.S. patent application Ser. No. 14/826,091, “Programmable Current For Correlated Electron Switch”, which are incorporated herein by reference.
State transitions in the material only occur when both voltage and current levels exceed certain thresholds. For example, in one embodiment, the set voltage is 1.2V, the reset voltage is 0.6V and the read voltage is 0.3V.
Provided that the current threshold is not exceeded, the material, once placed into a high resistance state, remains in a high resistance state
CES memory cells are born-on, corresponding to a logical-1 value. That is, after fabrication, the correlated electron material in the CES cell is in a low resistance state. Thus, all key values are set to zero.
In accordance with one embodiment of the disclosure, the logic encryption element uses CES memory cells that are in a low resistance (logical-1) state before programming. Write circuit 922 may be configured to enable reset the state of selected memory cells to a high resistance state (logical-0), but not configured to enable switching a memory cell from a logical-1 to a logical-0. That is, the memory cells may only be written once. This makes it harder for an attacker to determine the key value, since a device could not be used if any cell is incorrectly programmed even once.
When CES memory cells are used in the embodiment shown in
Each memory cell may be coupled to a first line that selectively couples memory cell to a source such as an electrical ground and a second line that provides a bias voltage. A high current is used to reset a memory cell, while a lower current is sensed and used to read cell. Memory cells may be coupled in first groups that share the same first line (a current control line or word line) and second groups that share the same the same second line (a voltage control line or bit line).
Other circuits will be apparent to those of ordinary skill in the art and are considered to be equivalent to the example circuit shown in
It will be apparent to those of ordinary skill in the art that the logic circuits may be constructed using various combinations of logic elements and utilizing positive or negative logic or a combination thereof.
The integrated circuits disclosed above may be defined be a set of instructions of a Hardware Description Language (HDL). The instructions may be stored in a non-transient computer readable medium. The instructions may be distributed via the computer readable medium or via other means such as a wired or wireless network. The instructions may be used to control manufacture or deign of the integrated circuit, and may be combined with other instructions.
The mapping of values at the input nodes to values at the output nodes corresponds to the desired mapping when values stored in memory cells of the one or more logic encryption elements match components of the prescribed key value.
When the values stored in memory cells of the one or more logic encryption elements do not match components of the prescribed key value, there is a high probability that a different, and incorrect, mapping is implemented. For example, when 256 logic encryption elements are used, it is highly unlikely that the protected circuit will function correctly with any other combination that the prescribed key vector. In addition, it is hard for an attacker to discover the correct key vector.
As discussed above, a memory cell of the one or more logic encryption elements may comprise a correlated electron switch (CES) memory cell that is programmed by applying a programming voltage across the correlated electron switch (CES) and controlling an electrical current through the correlated electron switch (CES). Other on-chip, non-volatile memory cells may be used.
The programming circuitry may include a write circuit and a port that provides and interface to the write circuit. A memory cell is programmed by generating, external to the integrated circuit, a programming signal that encodes the key values and providing the programming signal to the port of the integrated circuit. The write circuit is responsive to the programming signal to program the memory cells with the key values.
Programming of the integrated circuit may be performed before or after integration into a system or product, via the programming or debug port. Multiple integrated circuits may be daisy-chained together via the programming ports.
In the approach described above, the logic encryption elements are added to a circuit design. Alternatively, the circuit, with the included logic encryption elements, may be designed together.
Although illustrative embodiments of the invention have been described in detail herein, with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various changes and modifications can be effected therein by one skilled in the art without departing from the scope and essence of the invention as defined by the appended claims.
It will be appreciated that the devices, systems, and methods described above are set forth by way of example and not of limitation. Absent an explicit indication to the contrary, the disclosed steps may be modified, supplemented, omitted, and/or re-ordered without departing from the scope of this disclosure. Numerous variations, additions, omissions, and other modifications will be apparent to one of ordinary skill in the art. In addition, the order or presentation of method steps in the description and drawings above is not intended to require this order of performing the recited steps unless a particular order is expressly required or otherwise clear from the context.
The method steps of the implementations described herein are intended to include any suitable method of causing such method steps to be performed, consistent with the patentability of the following claims, unless a different meaning is expressly provided or otherwise clear from the context. So for example performing X includes any suitable method for causing another party such as a remote user, a remote processing resource (e.g., a server or cloud computer) or a machine to perform X. Similarly, performing elements X, Y, and Z may include any method of directing or controlling any combination of such other individuals or resources to perform element X, Y, and Z to obtain the benefit of such steps. Thus method steps of the implementations described herein are intended to include any suitable method of causing one or more other parties or entities to perform the steps, consistent with the patentability of the following claims, unless a different meaning is expressly provided or otherwise clear from the context. Such parties or entities need not be under the direction or control of any other party or entity, and need not be located within a particular jurisdiction.
It should further be appreciated that the methods above are provided by way of example. Absent an explicit indication to the contrary, the disclosed steps may be modified, supplemented, omitted, and/or re-ordered without departing from the scope of this disclosure.
It will be appreciated that the methods and systems described above are set forth by way of example and not of limitation. Numerous variations, additions, omissions, and other modifications will be apparent to one of ordinary skill in the art. In addition, the order or presentation of method steps in the description and drawings above is not intended to require this order of performing the recited steps unless a particular order is expressly required or otherwise clear from the context. Thus, while particular embodiments have been shown and described, it will be apparent to those skilled in the art that various changes and modifications in form and details may be made therein without departing from the scope of this disclosure and are intended to form a part of the disclosure as defined by the following claims, which are to be interpreted in the broadest sense allowable by law.
The various representative embodiments, which have been described in detail herein, have been presented by way of example and not by way of limitation. It will be understood by those skilled in the art that various changes may be made in the form and details of the described embodiments resulting in equivalent embodiments that remain within the scope of the appended claims.
Accordingly, some features of the disclosed embodiments are set out in the following numbered items:
1. A protected circuit comprising:
-
- a logic circuit providing one or more input nodes and one or more output nodes, the logic circuit comprising:
- a network of logic elements; and
- one or more logic encryption elements,
- where a logic encryption element of the one or more logic encryption elements comprises a memory cell coupled with a configurable sub-circuit that is configured by a value stored in the memory cell, and
- where a mapping of values at the one or more input nodes to values at the one or more output nodes corresponds to a desired mapping when values stored in the one or more memory cells match component values of a prescribed key vector.
2. The protected circuit of item 1, where the configurable sub-circuit comprises a multiplexer having a value stored in a memory cell as a selection input.
3. The protected circuit of item 1, where configurable sub-circuit comprises an XOR or XNOR logic gate having a value stored in a memory cell as a first input.
4. The protected circuit of item 1, where the configurable sub-circuit comprises a path encryption element.
5. The protected circuit of item 1, where the one or more logic encryption elements are distributed in the network of logic elements.
6. The protected circuit of item 1, where the memory cell comprises a correlated electron switch (CES).
7. The protected circuit of item 6, further comprising a write circuit operable to write values to memory cells of the one or more logic encryption elements.
8. The protected circuit of item 7, where the memory cells of the one or more logic encryption elements store a first binary value upon fabrication, and where the write circuit is operable to write a second binary value to a memory cells of the one or more logic encryption elements but is unable to write the first binary value.
9. The protected circuit of item 7, further comprising an interface operable to receive a programming signal applied to the protected circuit, where the write circuit is responsive to the interface to write values to the memory cells dependent upon the programming signal.
10. A non-transient computer readable medium containing instructions of a hardware description language descriptive of the protected circuit of item 1.
11. A protected circuit comprising: - a plurality of logic elements;
- a plurality of memory cells; and
- a plurality of reconfigurable sub-circuits each configured by at least one value stored in a memory cell of the plurality of memory cells,
where the plurality of logic elements and the plurality of reconfigurable sub-circuits are coupled to form a logic circuit having one or more input nodes and one or more output nodes, and
where a mapping of values at the one or more input nodes to values at the one or more output nodes corresponds to a desired mapping when values stored in the plurality of memory cells match components of a prescribed key value.
12. The protected circuit of item 11, where a configurable sub-circuit of the plurality of reconfigurable sub-circuits comprises a multiplexer having a value stored in a memory cell as a selection input.
13. The protected circuit of item 11, where a configurable sub-circuit of the plurality of reconfigurable sub-circuits comprises an XOR or XNOR logic gate having a value stored in a memory cell as a first input.
14. The protected circuit of item 11, where a configurable sub-circuit of the plurality of reconfigurable sub-circuits comprises a path encryption element.
15. The protected circuit of item 11, where the one or more logic encryption elements are distributed in the logic circuit.
16. The protected circuit of item 11, where at least one memory cell of the plurality of memory cells comprises a correlated electron switch (CES).
17. The protected circuit of item 11, where at least one memory cell of the plurality of memory cells comprises a non-volatile memory cell.
18. A method for protecting a logic circuit, the logic circuit comprising a plurality of logic elements, coupled via signal paths to form a logic network with one or more input nodes and one or more output nodes, and one or more logic encryption elements, where at least one signal path of the logic network includes a logic encryption element, of the one or more logic encryption elements, operable to encrypt a signal of the at least one signal path of the logic network or to encrypt one or more signal paths of the logic network, where a logic encryption element of the one or more logic encryption elements comprises a memory cell coupled with a configurable sub-circuit that is configured by a value stored in the memory cell, the method comprising: - fabricating an integrated circuit comprising the logic circuit and the one or more logic encryption elements; and
- programming the memory cells of the one or more logic encryption elements to match components of a prescribed key value,
where a mapping of values at the one or more input nodes to values at the one or more output nodes corresponds to a desired mapping when values stored in memory cells of the one or more logic encryption elements match components of the prescribed key value.
19. The method of item 18, where a memory cell of the one or more logic encryption elements comprises a correlated electron switch (CES) and where programming the memory cell comprises: - applying a programming voltage across the correlated electron switch (CES); and
- controlling an electrical current through the correlated electron switch (CES).
20. The method of item 18, where the integrated circuit further comprises a write circuit and a port that provides and interface to the write circuit, where programming a memory cell of the one or more logic encryption elements comprises: - generating, external to the integrated circuit, a programming signal that encodes the key value; and
- providing the programming signal to the port of the integrated circuit;
where the write circuit is responsive to the programming signal to program the memory cells with the key value.
Claims
1. A protected circuit comprising: where a logic encryption element of the one or more logic encryption elements comprises a memory cell coupled with a configurable sub-circuit that is configured by a value stored in the memory cell, and where a mapping of values at the one or more input nodes to values at the one or more output nodes corresponds to a desired mapping when values stored in the one or more memory cells match component values of a prescribed key vector.
- a logic circuit providing one or more input nodes and one or more output nodes, the logic circuit comprising: a network of logic elements; and one or more logic encryption elements,
2. The protected circuit of claim 1, where the configurable sub-circuit comprises a multiplexer having a value stored in a memory cell as a selection input.
3. The protected circuit of claim 1, where configurable sub-circuit comprises an XOR or XNOR logic gate having a value stored in a memory cell as a first input.
4. The protected circuit of claim 1, where the configurable sub-circuit comprises a path encryption element.
5. The protected circuit of claim 1, where the one or more logic encryption elements are distributed in the network of logic elements.
6. The protected circuit of claim 1, where the memory cell comprises a correlated electron switch (CES).
7. The protected circuit of claim 6, further comprising a write circuit operable to write values to memory cells of the one or more logic encryption elements.
8. The protected circuit of claim 7, where the memory cells of the one or more logic encryption elements store a first binary value upon fabrication, and where the write circuit is operable to write a second binary value to a memory cells of the one or more logic encryption elements but is unable to write the first binary value.
9. The protected circuit of claim 7, further comprising an interface operable to receive a programming signal applied to the protected circuit, where the write circuit is responsive to the interface to write values to the memory cells dependent upon the programming signal.
10. A non-transient computer readable medium containing instructions of a hardware description language descriptive of the protected circuit of claim 1.
11. A protected circuit comprising: where the plurality of logic elements and the plurality of reconfigurable sub-circuits are coupled to form a logic circuit having one or more input nodes and one or more output nodes, and where a mapping of values at the one or more input nodes to values at the one or more output nodes corresponds to a desired mapping when values stored in the plurality of memory cells match components of a prescribed key value.
- a plurality of logic elements;
- a plurality of memory cells; and
- a plurality of reconfigurable sub-circuits each configured by at least one value stored in a memory cell of the plurality of memory cells,
12. The protected circuit of claim 11, where a configurable sub-circuit of the plurality of reconfigurable sub-circuits comprises a multiplexer having a value stored in a memory cell as a selection input.
13. The protected circuit of claim 11, where a configurable sub-circuit of the plurality of reconfigurable sub-circuits comprises an XOR or XNOR logic gate having a value stored in a memory cell as a first input.
14. The protected circuit of claim 11, where a configurable sub-circuit of the plurality of reconfigurable sub-circuits comprises a path encryption element.
15. The protected circuit of claim 11, where the one or more logic encryption elements are distributed in the logic circuit.
16. The protected circuit of claim 11, where at least one memory cell of the plurality of memory cells comprises a correlated electron switch (CES).
17. The protected circuit of claim 11, where at least one memory cell of the plurality of memory cells comprises a non-volatile memory cell.
18. A method for protecting a logic circuit, the logic circuit comprising a plurality of logic elements, coupled via signal paths to form a logic network with one or more input nodes and one or more output nodes, and one or more logic encryption elements, where at least one signal path of the logic network includes a logic encryption element, of the one or more logic encryption elements, operable to encrypt a signal of the at least one signal path of the logic network or to encrypt one or more signal paths of the logic network, where a logic encryption element of the one or more logic encryption elements comprises a memory cell coupled with a configurable sub-circuit that is configured by a value stored in the memory cell, the method comprising: where a mapping of values at the one or more input nodes to values at the one or more output nodes corresponds to a desired mapping when values stored in memory cells of the one or more logic encryption elements match components of the prescribed key value.
- fabricating an integrated circuit comprising the logic circuit and the one or more logic encryption elements; and
- programming the memory cells of the one or more logic encryption elements to match components of a prescribed key value,
19. The method of claim 18, where a memory cell of the one or more logic encryption elements comprises a correlated electron switch (CES) and where programming the memory cell comprises:
- applying a programming voltage across the correlated electron switch (CES); and
- controlling an electrical current through the correlated electron switch (CES).
20. The method of claim 18, where the integrated circuit further comprises a write circuit and a port that provides and interface to the write circuit, where programming a memory cell of the one or more logic encryption elements comprises: where the write circuit is responsive to the programming signal to program the memory cells with the key value.
- generating, external to the integrated circuit, a programming signal that encodes the key value; and
- providing the programming signal to the port of the integrated circuit;
Type: Application
Filed: Dec 16, 2016
Publication Date: Jun 21, 2018
Patent Grant number: 10438022
Applicant: ARM Limited (Cambridge)
Inventors: Vikas CHANDRA (Fremont, CA), Mudit BHARGAVA (Austin, TX)
Application Number: 15/381,222