Agile software development methods result in highly adaptive environments that support incremental development with cross-functional teams. According to Neil Johnson, principal consultant at Cadence partner and design services provider XtremeEDA, agile methods are a natural fit for Silicon Realization as described in the EDA360 vision paper. In this guest blog, Johnson shows how agile methods facilitate convergence, a key tenet of Silicon Realization.
In the whitepaper Silicon Realization-A New Approach To Faster, Better, and More Profitable Silicon, Cadence identifies the tenets of unified intent, abstraction and convergence as the keys to creating silicon. While all three are indeed integral to successful product delivery, the concept of convergence most challenges traditional thinking in EDA and semiconductor development.
The whitepaper defines convergence as follows:
The term ‘convergence' represents the marriage of top-down and bottom-up methodologies. Convergence is about building a solution where successive refinements and concurrent optimizations ensure intent is met in all aspects.
Even modestly sized state-of-the-art products are developed as a set of newly developed modules and IP blocks along with supporting integration logic. Completion of these modules and IP ideally converge at some point as they are molded into the end product, validated and delivered. With successful convergence comes successful, timely delivery. For teams that are slow to converge, the obvious consequences can include added stress on the development team, with delivery dates pushed and dollars ultimately lost.
But given that we all know design, verification and implementation need to come together before hardware becomes reality, why would EDA360 specifically single out convergence as a tenet of Silicon Realization? It is subtle, but for most teams the value is simply in the recognition. In recognizing convergence, EDA360 is effectively identifying divergence as an impediment in development process. A renewed emphasis on convergence is an effort to remove that impediment.
With an increasing emphasis on vertical sub-teams and functional specialization, it's hard to deny that hardware developers have a preference for divergence. To an extent, we have ignored the problems that this preference has created. EDA360 aims to rectify that by highlighting collaboration, specifically between design team and foundry, as key to timely convergence.
But we can do better. Developers must recognize divergence as an impediment to delivery and challenge themselves to address it throughout the development cycle. How do teams do that? Agile methods.
Figure 1 - Agile methods lessen divergence
Agile development has been used successfully within the software field for more than a decade. While agile comes in many flavors, a characteristic that is fundamental to all of them is incremental development. Incremental development is what we look at next as it applies to convergence in Silicon Realization. (For a good overview of the basics, see Richard Goering's blog post Can Agile Software Development Methods Help SoC Design?)
Consider a traditional semiconductor development process where functional compartmentalization and limited collaboration creates one long diverge-converge cycle. A number of functional teams are allowed to wander from the very beginning until mounting delivery pressures dictate the obvious need for a stressful, at times haphazard, convergence.
Figure 2 - A Single Diverge/Converge Cycle
Even with unified intent from the outset, early divergence is almost guaranteed by the fact that there tends to be very little correlation between priorities of functional teams to the extent that shared milestones do not normally appear until a product release.
Now consider a process that includes not only unified intent, but regular milestones that are shared across all functional teams. The purpose of these shared milestones is to ensure that functional teams are indeed converging toward a customer solution long before delivery of the end product.
Figure 3 - Diverge/Converge/Repeat
With the understanding that development will diverge from intent in varying ways and to varying extents, agile teams set milestones for incremental completion of a product. Teams start small by developing a small but functional subset of the end product. Development continues with a growing functional subset that steadily crescendos in size on its way to delivery. In agile, this is known as incremental development.
To underscore the similarity between incremental development and EDA360, incremental development by definition is a process "where successive refinements and concurrent optimizations ensure intent is met in all aspects" as noted in Silicon Realization-A New Approach To Faster, Better, and More Profitable Silicon.
With much shorter cycles, opportunities for divergence are minimized, thereby simplifying the problem of convergence.
Obviously, EDA360 does not only apply to EDA. The immediate effects will be felt by organizations that evolve to use next generation tools and techniques. Further, the evolution toward EDA360 will undoubtedly trickle down to even the organizational structure, especially as teams understand the importance of convergence and the requirements to make it happen when focused on the application. Agile development process can almost certainly assist organizations with this immense undertaking.
Together, complementing the EDA360 vision with proven methods from agile development brings exciting new possibilities and a viable way forward for both EDA and semiconductor companies.
This guest blog entry was adapted from Realizing EDA360 with Agile Development posted on http://www.agilesoc.com/. Anyone interested in other articles and video presentations on agile hardware development is welcome to visit http://www.agilesoc.com/.