You can’t design a complex system without a simple system, but you can change the way the rules are used to get there.
By Jon McDonald
Over the past few months I’ve worked with a number of customers on new designs. Thinking about how these designs were evolving in the various organizations led me to an interesting epiphany related to the application of Gall’s Law to system design.
Gall’s Law is a rule of thumb from John Gall’s Systemantics: How Systems Really Work and How They Fail: “A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.”
This was very apparent in each of the “new” designs I saw. The traditional approach is to get something working, then continue to enhance and evolve the design over a number of generations of new products. This strategy gives us a reasonably reliable path to a working complex system, but it can take a long time to get there.
I realized that what we are trying to do with system-level design is not change Gall’s Law, but change the level of definition—and therefore the level of effort—required to get the initial system working and make each successive refinement. By leveraging the abstraction of the transaction level we are able to quickly get the initial working system.
Another less obvious benefit is that the flexibility of the system is much wider at the transaction level than at the RTL. We can take a working system and make significant architectural changes to the system with simple evolutionary steps. Many of the changes we can make by evolving our previous working system would have required a more significant redesign using traditional RTL approaches. This would potentially require us to start from scratch on portions of the design.
I’ve noticed improvements in the ability of the customers I’ve worked with recently to be creative with the architecture. Because they can quickly evolve a working architecture into many unique and creative options at the transaction level, they are able to have much greater freedom in their system implementation.
System-level design is not changing the rules for designing complex systems. System level-design techniques and transaction level modeling are changing the way the rules are applied to complex systems design.
–-Jon McDonald is a technical marketing engineer for the design and creation business at Mentor Graphics.
Leave a Reply