| Login | | Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name. | |
| Who's Online | There are currently, 51 guest(s) and 1 member(s) that are online.
You are Anonymous user. You can register for free by clicking here | |
 | |
|
Verification Guild: Forums |
|
| View previous topic :: View next topic |
| Author |
Message |
dave_whipp Senior


Joined: Jan 06, 2004 Posts: 76 Location: Santa Clara, CA
|
Posted: Sun Feb 06, 2011 3:28 pm Post subject: Parting Thoughts, and Farewell |
|
|
After 20 years working in hardware verification I’ve recently changed course to focus more on software. It was suggested to me that I might like to leave some parting thoughts.
One of my early tasks, as an intern in the summer of 1990, was to take part in an LVS review. Back then, this check -- that the layout matches the schematic -- was a manual process. We had the printout of a SPICE netlist (that had been simulated), and we had a large plot of the chip’s layout (a few square meters in size). One person would read the netlist: “base of transistor Q125 to emitter of Q134”. The other person, me in this case, would find this route on the plot and trace over it with a marker pen (on tracing paper). A year later I was testing a SW tool that attempted automate this tedious process.
Over time I have observed a recurring pattern of EDA tool development. First, a tedious manual process is automated by custom in-house tools, in multiple chip companies. Once such tools becomes pervasive, then EDA companies attempt to sell tools that do the same thing: the value proposition is that, by relieving the chip companies of the burden of maintaining their own version of tools that offer little competitive advantage (because everyone has such tools), the in-house engineers are able to concentrate on solving newer problems that are not yet ripe for standardization.
In the second half of the 1990s I was working for one of the early adopters of ARM. At the time, testing methodology was dominated by self-checking directed tests. It was becoming increasing clear that this approach didn’t scale and that successful SoC methodology would require something better. In one study we analyzed several hundred directed tests that had been written by junior engineers: we found that some 20% of tests did not test what they claimed: even when they covered the intended lines of code in the DUT, they failed to check even simple things that could go wrong.
A methodology was needed that would tell us what was being tested, independent of the tests themselves. Furthermore it was realized that, if we didn’t rely on the quality of the tests, then it would be much cheaper to generate them randomly. This observation was not unique to any one company, and so naturally there soon sprung up a number of EDA solutions: the HVL ecosystem was born, and came to be dominated by E and Vera.
Then something changed. For reasons that remain murky, big EDA companies decided to collapse this ecosystem. A meme was introduced, that they could create better tools if they didn’t have competition. One big monolithic language, they said, would be superior to an ecosystem of smaller, more focused, fragments of solutions. It would be simpler to build verification tools if both the RTL and HVL components were written in the same language. We hear the same thing today: we should merge VHDL and Verilog into one language; and we should merge VMM and OVM into one library. As you may gather, I do not favor these ambitions.
Fortunately, the very idea that we should write our testbench in the same language as our DUT is itself undermining the strategy of borgification. As architects increasingly use C++ models of components (or sometimes Python, Perl, Matlab, etc), there is a natural inclination to reuse tests of those models (written in SW languages) against the final design (written in Verilog/VHDL). In this environment, HVLs that are targeted to HDLs become less relevant. There is a pressing need for testing tools that are language-agnostic – and such tools are indeed emerging. The shadow of the SystemVerilog steamroller is lifting.
One such tool, that I have been using successfully over the past few years, is Breker’s Trek. Trek randomly generates directed tests using a constrained random walk of a graph (constructed by verification engineers) that describes how an environment interacts with the DUT. This is a step back from the purist approach of SAT-based constraint solvers, but it does provide an effective platform for exploring deep sequences of interactions. It would be good to see panel discussions of SAT-solving Vs graph walking as methodologies for finding deep bugs.
Another tool that has recently emerged is Certitude, now owned by Springsoft. It takes on the problem of verification quality. Most people realize that a regression suite that hits 100% coverage with a 100% pass rate provides no guarantee of completeness: tests may be covering a feature without checking the results; and things may be broken that lead to failing tests being incorrectly reported as passing. Certitude demonstrates that significant advances in verification methodology do not require new languages.
But returning to the question of languages, one of the disappointments over recent years has been the focus on implementation efficiency. 10 years ago I was writing testbenches using Perl. In dynamic languages it is incredibly easy to create transactions, add “post-it” annotations, set up ad-hoc callbacks, and a whole bunch of other things that are the basis of powerful testbenches. SystemVerilog shines brightest when used for the BFM layer. For higher layers I find that productivity is sapped by the rigidity of the language, and readability is sapped by the boilerplate required for even simple tasks.
In moving from the world of hardware verification to the realm of software it is interesting to see how the two disciplines have different targets for their verification methodologies. In HW verification the imperative is to find any bug that could result in a respin (i.e. that does not have a SW workaround). The focus in SW is more on the quality of the code, to manage complexity. Testability is used to force clean dependency structures so as to maintain a flexible codebase. Maintainability is the dominant constraint. In contrast, the dominant constraint of a HW design is the laws of physics: power, timing, and area. It is fascinating to see how these constraints drive methodology, and to think about a future in which HW designs will become increasingly complex.
For the next few years I will focus on SW. After that, I cannot predict what the future may hold. For the time being at least, I bid you all farewell.
Dave. |
|
| Back to top |
|
 |
vhdlcohen Industry Expert


Joined: Jan 05, 2004 Posts: 1237 Location: Los Angeles, CA
|
Posted: Sun Feb 06, 2011 6:04 pm Post subject: |
|
|
| Quote: | | For the next few years I will focus on SW. After that, I cannot predict what the future may hold. For the time being at least, I bid you all farewell. |
Curious, is this sw as applicable to chip functionality, such as system design software or maybe firmware, or more of sw as applicable to tool designs, such as simulators or synthesis tool?
| Quote: | | The focus in SW is more on the quality of the code, to manage complexity. |
That is true. However, it is also true that because of schedules, many shortcuts are taken.
.. and best wishes on your new ventures. _________________ Ben Cohen http://www.systemverilog.us/
* SystemVerilog Assertions Handbook, 3rd Edition, 2013
* A Pragmatic Approach to VMM Adoption
* Using PSL/SUGAR ... 2nd Edition
* Real Chip Design and Verification
* Cmpt Design by Example
* VHDL books |
|
| Back to top |
|
 |
krupan Senior


Joined: Mar 18, 2010 Posts: 11
|
Posted: Mon Feb 07, 2011 4:56 pm Post subject: |
|
|
Thanks, Dave, for the insight. A very interesting read. Some thoughts I had in response.
You say the push to standardized languages and libraries is a shame, but so is investing all your effort into a proprietary solution (e, vera). Since the tool licenses are all negotiated contracts with the EDA companies, once you have invested heavily in their proprietary solution, they suddenly have more leverage in those price negotiations. That's why it's good that Verilog and VHDL are standards, and that's why there was a push for SystemVerilog and UVM standards.
That being said, I have to agree with you that SystemVerilog is not the ideal solution and that dynamic languages like Perl or (even better, if you ask me) Python make a whole lot more sense for writing testbenches. All the design patterns employed to make VMM/OVM/UVM more flexible are a testament to the fact that the strictness of the language is in the way. For reference, see how the software world has turned from C, C++, and Java to the likes of Ruby and Python for applications where speed of writing code and code flexibility are greater concerns than execution speed: web applications. Testbenches have the same priorities.
I recently came from the software world back into verification, and I too noticed the big emphasis in the software world on code quality and maintainability and how it compares to hardware design. It makes complete sense in the software world, because code is never done. There are always new features to add and bugs to fix, and the faster you can accomplish that, the more money there is to be made. Your code better be readable and easy to change. Hardware has had the difficulty, but also the luxury, of tape-out: at some point the code really is frozen and you can drop it and move on. Except, not really. Modules get re-used, and more and more, the code turns into an FPGA instead of an ASIC, and then it's basically the same as software, it absolutely needs to be maintainable and changeable to meet customer needs. I expect to see software and hardware focuses converge more as time goes on.
One other big thing that I noticed coming from software world, is how expensive our tools are here in EDA land. Software design has gotten to the point that you can create really good software with all free, open source tools. In fact, I'd be willing to bet good money that the companies creating the software that we use don't pay the kind of license fees for their tools that we pay them for our tools. Why is that? Why don't we have an open source simulator that competes with the expensive commercial ones the way gcc and Linux did to put commercial compilers and workstation operating systems almost completely out of business? Imagine if Dave's description of how EDA tools came about was changed to this:
"Over time I have observed a recurring pattern of EDA tool development. First, a tedious manual process is automated by custom in-house tools, in multiple chip companies. Once such tools becomes pervasive, then the chip companies release the tools as open source: the value proposition is that, by relieving the chip companies of the burden of each maintaining their own version of tools that offer little competitive advantage (because everyone has such tools), the in-house engineers are able to concentrate on solving newer problems that are not yet ripe for standardization."
Alas, instead we have the Pepsi vs. Coke world of expensive and basically equivalent EDA tools from either Cadence, Synopsys, or Mentor. |
|
| Back to top |
|
 |
dave_whipp Senior


Joined: Jan 06, 2004 Posts: 76 Location: Santa Clara, CA
|
Posted: Mon Feb 07, 2011 10:09 pm Post subject: |
|
|
| krupan wrote: | | You say the push to standardized languages and libraries is a shame |
I hope I didn't say that. Standards are great: one of the great things about standards is that there are so many to choose from!
Seriously, my objection to SystemVerilog process is in a number of parts: firstly, there is the philosophical objection to building monolithic things (a corollary being that a large standard raises the barrier to entry). Secondly I object to the notion that competing standards are bad for the user. Thirdly, it seems to me that the SystemVerilog's success is a result of a well executed marketing campaign and not a result of technical merit (compare 2005 "E" to 2010 "SV": which is better for verification?).
The standardization that was needed back in 2005 was interoperability. There was a thriving ecosystem of HVL ideas but VIP from these various approaches wouldn't interoperate easily. This problem can be solved either by killing all but one of the solutions (an approach that encompasses introducing a new player and killing everyone else), or else you define a foundation layer through which they play. Some additions to v2k would have been useful but it was not necessary, IMO, to expand the scope.
I look to the "zero, one, many" principle: if you can make two different things play well together, then extending this to a third is usually fairly simple. If you take a "there can be only one" approach then extending from "one" to "many" can be all but impossible. For this reason, I would urge to strive to keep two strongly competing standards alive and interoperating. These two could have 95% mindshare between them, but the fact of interoperability makes it possible for the remaining 5% to be filled by niche products, where lightweight experimentation is easiest.
| krupan wrote: | Imagine if Dave's description of how EDA tools came about was changed to this:
"Over time I have observed a recurring pattern of EDA tool development. First, a tedious manual process is automated by custom in-house tools, in multiple chip companies. Once such tools becomes pervasive, then the chip companies release the tools as open source: the value proposition is that, by relieving the chip companies of the burden of each maintaining their own version of tools that offer little competitive advantage (because everyone has such tools), the in-house engineers are able to concentrate on solving newer problems that are not yet ripe for standardization." |
The problem with this is that the cost incentives really aren't there. The in-house solutions tend to have legacy characteristics and often won't work outside of the company where they were developed, due to hooks into other tools and assumptions of usage patterns. Releasing such code as open source is not cheap. First you need to make it work stand-alone. Next you need to sanitize it to avoid inadvertently exposing business process information that are implicit in the code. Finally, you need to make sure that you aren't violating any licenses or patents when you release it.
And once it's released, no one else is going to use it. Everyone else already has their own solution which most likely is better integrated into their internal systems then yours is. And if open-source code isn't actively developed by others, then the original releaser doesn't derive any benefit (if its free, then the payback is the many eyeballs of other users). Someone needs to advocate its -- to derive benefit, the releaser needs to market it, and that would usually be seen as a distraction away from the core business.
There are a few cases where open source could work, but usually the cost-benefit analysis favors having the development of the replacement standard done by a third party -- often an EDA startup (perhaps started by former employees of a chip company). The tool would be their core business and their core competence. And as a business, they need to make money from it. The open-source approach is basically a barter system: a cash based model is more efficient if your goal is share-holder value (GNU, and similar organizations, are not for-profit businesses, so different considerations apply).
EDA tools are expensive because the market is small and development costs need to be paid for. In the SW world you can look to the price of SCM and CASE tools -- these are similarly expensive. Many companies are willing to pay for tools like Perforce or Clearcase because they consider open source alternatives (git, svn) to be inadequate.
Dave. |
|
| Back to top |
|
 |
krupan Senior


Joined: Mar 18, 2010 Posts: 11
|
Posted: Tue Feb 08, 2011 12:17 am Post subject: |
|
|
True, it's easier to let internal tools die on the vine than it is to open source them, and there are risks and downsides to doing it, yet successful companies like Facebook, Google, IBM, Intel, and even Microsoft, have released open source code. Why?
As for a business model, there are successful companies that release *all* their products as open source. Red Hat is a prime example, and I'm sure the founders of MySQL made out pretty well when Sun bought their company. And think, if chip makers released their code as open source, they might stop losing their star tool developers to start-ups.
It's true that the size of the EDA market is much smaller than the general software world, and that is probably the biggest reason open source hasn't taken off here like it has in the software world. The chances of a Linus Torvalds emerging from amongst the EDA ranks is a lot slimmer. |
|
| Back to top |
|
 |
pavanshanbhag Senior


Joined: Mar 25, 2009 Posts: 380 Location: Bangalore, India
|
Posted: Sat Feb 12, 2011 11:28 am Post subject: |
|
|
Dave Wrote:
| Quote: |
It would be simpler to build verification tools if both the RTL and HVL components were written in the same language. We hear the same thing today: we should merge VHDL and Verilog into one language; and we should merge VMM and OVM into one library. As you may gather, I do not favor these ambitions.
|
Every language has its own use and advantage and some disavantageous even. Due to enhancement of reusabilty, efficient coding and derivates of code been taken into the further ongoing projects - Especially Gaints companies dont prefer to change thier methodology of implementation like using different languages/methodologies for design / verification all together, unless it is 101%required.
And about combining VMM and OVM - its next thing to be impossible. Since both these belong to two different identity organisation.
Small quote on it : Healthy Competitions should always be there in innovations of languages/methodology/implementation/protocol. It has a lot of advantages : Increases ManPower, Improved Productivity, Lesser Cost and Durability.
Krupan Wrote :
| Quote: |
It's true that the size of the EDA market is much smaller than the general software world, and that is probably the biggest reason open source hasn't taken off here like it has in the software world.
|
Although the size of EDA market is small, it doesnt mean that revenue is small even If you compare the yearly revenue of EDA Market is much higher when compared to the ratio of Market : Turnover.
Dave Wrote :
| Quote: |
For the next few years I will focus on SW. After that, I cannot predict what the future may hold. For the time being at least, I bid you all farewell.
|
Initially wish you all the very best in future assignments. Its great to know people strive out for thirst and survivallence even after > 20 years of exp.
The day we think Can I do ? or Is it possible for me to implement it , that will be end of life of thinking and implementing adventure. I would like to share 3 things in my life which I was always follow along with other hurdles/ great quotes :
First Quote :
"Difference between genius and stupidity, genius knows his limits" - Albert Einstein.
Second Quote :
"Dont loose the footholds on Earth, while sweeping the skies" - Dr.Radhakrishnan
Third Quote :
"Survival of the Fittest" - Charles Darwin.
Again Dave wish you a great career ahead.
And as a part of myself being in Design and Verification, I keep the below line intact in my heart and mind to work it on :
- The man of science has learned to believe in justification, not by faith, but by verification. _________________ -Pavan K Shanbhag
“The difference between genius and stupidity, genius knows his limits.” - Albert Einstein |
|
| Back to top |
|
 |
Sckoarn Senior


Joined: May 23, 2007 Posts: 203 Location: Ottawa, Ontario
|
Posted: Mon Mar 07, 2011 9:50 am Post subject: |
|
|
I have enjoyed reading your posts Dave.
All the best in your new direction.
Sckoarn ;( _________________ VHDL Testbench GNU publication
http://opencores.org/project,vhld_tb |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
| |
|
|