Are you looking for an easier way to develop the right
product for your target customer, on time and within budget? Perhaps it's time
to learn something from the software world and apply "agile" software
development methods to SoC design, according to Neil Johnson, principal
consultant at design services provider XtremeEDA.
XtremeEDA is a member of the recently-formed Cadence System
Realization Alliance. With offices in Ottawa,
XtremeEDA is a major provider of design services and training for ASIC, FPGA,
and SoC design and verification. The company focuses heavily on ESL modeling
and functional verification.
This posting, however, is mostly about a web site launched
by Johnson and Bryan Morris, a software industry veteran and long time
colleague. Called Agile SoC, the site
contains a number of articles showing how agile software development methods
can be applied to all phases of IC design. Johnson sees a strong connection
between these methods, some of which have been adopted at XtremeEDA, and EDA360.
Since Johnson himself was unfamiliar with agile software
development until he learned about it from Morris, I suspect many readers are
in the same boat. A Wikipedia entry
defines agile software development as "a group of software development
methodologies based on iterative development, where requirements and solutions
evolve through collaboration between self-organizing cross-functional teams."
The Agile SoC site has some good background in an article entitled "IC Development and the Agile Manifesto."
"Agile means adaptability," Johnson explained. "The whole
thing is built on the premise that at the beginning of a project you don't
really understand what you're building. You might be able to come up with a
spec, but no matter how much effort is put into it, the spec isn't going to
properly represent what your customer needs. Agile comes down to accepting
there's going to be change and then building a framework that allows you to
change and be flexible."
Hardware designers, Johnson said, have "tried to fool
themselves into thinking they can go from specs to successful products with no
hiccups," but it hasn't happened. "We think a lot of teams don't understand
what their customers need, and success rates aren't as high as we want to
believe they are in terms of cost, time to market and feature set."
Agile SoC Development
So how might agile software concepts apply to SoC
development? According to Johnson, there are several ways:
An article by Johnson entitled "An
Agile Approach to ESL Modeling" shows how agile methods can be employed in
system-level design. It notes the importance of understanding customer value,
and of refining system models when customer value inevitably changes. It talks
about close collaboration with customers and about the value of
cross-functional development teams that "work together to build a whole product."
The article also notes that ESL modeling is a very suitable candidate for
Johnson said that XtremeEDA has adopted some of the
principles of agile SoC development, including incremental development, but is
not overtly "waving the agile flag" in its customer engagements.
The EDA360 Connection
The agile SoC development concept "directly parallels" the EDA360 vision, according to Johnson.
EDA360, he said, suggests "a thought process where things filter down from the
top. You start work where it makes the most impact and then you get down to the
details, as opposed to writing the detailed hardware first and then being
locked into something. Agile development really ties into that."
What is XtremeEDA hoping to gain from the System Realization
Alliance? "If there's collaboration between Cadence presenting the [EDA360]
vision, and us helping customers realize the vision, that's a big thing for us
as a services company," Johnson said. "If we can help people see what this
means and then help them drive the process, that's fantastic."