The Entropy of EDA Tools
Gabe Moretti, Senior Editor
In my free time I read books on physics and philosophy, so during my vacation I started reading “Hidden in Plain Sight # 3: The Secret of Time” by Andrew Thomas. One of the chapters in the book discusses the subject of entropy. Entropy was first defined by the German physicist Rudolf Clausius as dS/dt > 0. That means that entropy in every entity, be it material or biological, always increases with time. Maximum entropy equals maximum disorder of the component atoms in the entity. The equation defines the second law of thermodynamics.
The Austrian physicist Ludwig Boltzmann realized that the increase in entropy could be expressed as S = klogW where the value of W is the amount of disorder in the current state of the entity. That means that a system that changes randomly will tend to become more disorderly with time. Thus things (the entities) are created orderly and become disorderly: this is called aging.
The concept seemed quite obvious to me until I started thinking about software programs like EDA tools. A program starts in the intents of its creators as an orderly entity. In fact during its existence users randomly find defects (bugs) and the bugs are fixed, thus making the program more orderly. As this continues during the useful life of the program, it becomes more orderly, thus its entropy decreases. But do not despair or rejoice, depending on your point of view. We have not just broken the second law of thermodynamics.
But, just may be, we have found that entities which are not physical, like computer programs or scientific laws, have the property of having their entropy lower in the “backward” direction of time. That, in itself has given me some degree of satisfaction.
It turns out that the laws of physics are symmetrical with respect to time: that is they apply equally in both direction of the arrow of time. So software programs are a perfect example of this state of affairs. And yet, EDA tools are a constant target of complaints by their users, whose life is made harder by the bugs (disorder) in the program. This means that increasing entropy toward the past is not a good thing for users. It is also not a good thing for developers. They must work to decrease entropy by fixing bugs. And just when the program reaches a stable status with the lowest possible value of its entropy it becomes obsolete and a new development must start.