Polymorphic Circuits

July 14, 2008

Here is a neat and not so new idea that I came across last year – “Polymorphic Circuits”. The basic concept is logic gates which under specific operating conditions behave in a certain way while under different operating conditions behave in another way. For example a circuit when operated with a 2 volt supply might act as an OR gate but when supplied with 1 volt will become an AND gate, or another example might be a circuit which in room temperature behaves as an XOR gate while at 120 degrees, the very same circuit operates as a NAND gate.

This concept just screams for new application (I guess mainly in security) but I was not able to think of something specific so far. Feel free to shoot ideas around in the comments section of this post.

In the meantime more details can be found on this paper (just skip to the images at the end of the paper to get the idea), or this paper.


  1. I’m thinking on-die temperature control loop. As the functionality changes so does the response signature of logic. We create a circuit that changes to some control state machine that modifies the voltage and frequency of the machine in response to local hotspots.

  2. This is somewhat similar to DVFS (Dynamic voltage/frequency scaling) which is gaining popularity. In the examples I saw they use some sort of ring oscillator and counters to determine the speed at which the clock is running, thus deducing if it is possible to lower the voltage for example.

  3. This sounds like something that could easily be done with memristors.

Leave a Reply to digital_L0gik Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: