Agile hardware development is an approach whereby frameworks and practices normally associated with agile software are applied in the development of IP, FPGAs, ASICs and/or SoCs.
Agile software practitioners have found that success depends on treating product software development as more than an impersonal, pre-defined, assembly line process where individuals toss code from cubicle to cubicle. A similar assessment could be made within hardware development. On a fundamental level, product development–software and hardware–relies on creative problem solving that cannot be shoehorned into a defined process. Successful products evolve over time and require strong collaboration within a team that is constantly synchronized with customer need; developers must understand the context of their efforts and the business they are a part of.
The agile manifesto was written by software developers to guide others within their field. While there are obvious differences between software development and hardware development, there are also significant similarities. Depending on target technology, similarities begin to significantly outweigh differences between the two fields. In development of hardware IP and FPGA base products where target technology is malleable, practices considered fundamental to agile development may be highly applicable. These practices would include iterative development and continuous deployment among others. Likewise, even in ASIC and SoC development where target technology imposes serious restrictions on flexibility, teams may still find value in using various agile development practices such as iterative development, test-first programming, pair programming and continuous integration.
In short, agile development supplies hardware developers with an entire toolbox of practices that can be used to increase responsiveness, adaptability and product quality regardless of the restrictions imposed by target technology.
Page contents originally provided by Neil Johnson, principal consultant at XtremeEDA