Verification teams at every chip design company on the planet eventually develop what to them seems like a set of amazing and revolutionary tools to help them get their jobs done. Through my work as a consultant I get an opportunity to see many of these tools in action. Some are quite good - others could use some work. In every case, someone has spent a significant amount of time creating and maintaining the tool in question. In almost every case, a similar tool exists elsewhere in industry. Isn't it a shame we all have to keep doing the same work over and over again when someone has already gone to the trouble?
One of my biggest pet peeves is having to create something that already exists. I'd rather spend that time working on something that has yet to be created. However, for reasons of time, cost, lack of knowledge/availability of preexisting solutions, or "it's not invented here" syndrome, many engineers find themselves reinventing the wheel on a regular basis. Projects that fall into this category include:
- Statistics Dashboards
- SCM Wrapper Scripts (think Clearcase, CVS, Subversion, etc)
- Regression Runner
- Grid Computing Wrappers
- Specialized Bug Tracking Systems
- Helper Applications (like Verilog pre-processors)
- Scripts for mapping documentation to testplans/functional coverage
- Code coverage processing scripts
- CSR Modeling (including generating testbench, RTL, or driver code from documentation)
The question is, is there anything that can be done to reduce the wasted time and money brought about by rampant duplication of effort? I believe the Open Source and Cooperative models provide examples of ways the industry can work together to improve the productivity of design and verification teams.
The Wikipedia defines a cooperative as "an association of persons who join together to carry on an economic activity of mutual benefit." The general idea is that business would band together to form a co-op allowing them to work together to solve some of the general problems facing the verification industry. This is a new idea. Industry consortia such as Sematech allow companies to pool together resources to share the risk and rewards of advanced semiconductor research. It is reasonable to expect that companies would be able to share the results of the work done in CAD organizations around the world to advance the state of the art in verification techniques for a variety of different areas of domain expertise.
The problem could also be solved using an open source approach. The definition of Open Source software is open to some debate (I just finished reading several pages of discussions on the Wikipedia of people disagreeing with the presented definition, so we'll leave it at that). I'd point you to the Open Source Initiative's definition but the site seems to have been taken over temporarily by some sort of strange rave web site. Perhaps it will be fixed by the time you read this. For the purposes of this article, let's assume that when I say open source I mean the code is freely available and may be used and modified by others, and the source code for modifications is provided if and when the software is redistributed.
Using an open source approach, individuals and companies could work together to create some pretty interesting versions of the projects described above, if only anyone decided they were interested in doing the work. Therein lies the major difference between the co-op and open source approaches - The co-op provides an organized structure where members have an incentive to help shoulder their fair share of the workload. Open source requires no such commitment. However, the number of developers is potentially much larger. In either case, there are some compelling benefits to be had:
- Encourages development of robust software systems able to handle a wide variety of user environments.
- Enables sharing of ideas and helps combat "it's not invented here" syndrome.
- Helps spread verification risks and rewards across the entire industry.
- Provides major EDA vendors such as Cadence, Mentor, and Synopsys with some much needed competition.
- Contributes to potential development cost savings OR costs remain constant but quality improves.
There are also some drawbacks:
- Hardware engineers aren't good at packaging code for reuse. Many of them also aren't great software engineers in general - sometimes their code is a bit of a hack.
- Many companies say they view verification as a core competency. Management resistance to sharing perceived company secrets might prevent much knowledge sharing.
- Verification engineers are busy enough as it is without having to worry about publishing their work, let alone making updates or improvements available. Would require a commitment from senior management to make the system work.
If I had to convince my manager to let me share some major piece of a verification environment I would focus on the cost and quality issues identified above. For most companies, verification related intellectual property is a means to an end, not the end itself. Sharing your best known methods with others doesn't mean others will be able to duplicate your level of quality. But a rising tide does raise all boats. Improving the quality of silicon across the entire industry can't be a bad thing.