electronic engineering has been around for a long time…close to a century.  The early engineers drew much of their practices from the more established engineering disciplines…civil engineers (bridges, buildings, etc…) chief amongst them.

The conventional way to do things was to create your blueprint and have your builders build what you specified.  Sure, sometimes adaptations need to be made, the blueprints revised, etc… But generally speaking, the blueprint was a pretty reliable document to describe the end design.

Most hardware designs still follow that model: come up with the high level design and specifications then implement it.  Note that hardware includes both board level designs and also FPGA/ASICS, etc…

Software design essentially followed the same model.  Everyone is familiar with the waterfall model, even though the way it is commonly used is NOT what the original author had in mind. In the recent past, inroads have been made to change this.  The 90s brought us iterative design, and the new century ushered in Agile.  Both of these having a primary goal of speeding up the feedback loop to insure that we are solving the correct problem.  Often, at the inception of a project, we don’t actually know what the end product should be like.  We have an idea, but the actual concrete implementation, with all it’s corner cases and exceptions is far from the idea.

It turns out that the same problem is present in Hardware design.  EE Times has an article by Rishiyur S. Nikhil pointing to an EDA trend towards design-by-refinement.  Sounds like incremental design to me…

How sweet the sound…Hardware engineers finally taking a page from the software guys playbook…