Around 2 decades back, the demands from designs were relatively simple and the focus was on improving performance. Process nodes had longer
life, power optimization wasn’t even discussed and time to market pressure was
relatively less given that the end products enjoyed long life. In those days,
it was the designer who would first design and later verify his own code
usually using the same HDL. Over the years, as complexity accelerated, a new breed of engineers entered the scene, the DV engineers! The rational
given was that there is a need for an independent pair of eyes to confirm if the design is
meeting the intent! Verification was still sequential to the design in early days of directed verification. Soon, there was a need for constrained random verification
(CRV) and additional techniques to contain the growing verification challenge. The
test bench development now started in parallel to the design, improving the size & need of verification teams further. With non HDLs i.e. HVLs entering the
scene the need for DV engineers was inevitable. All these years, the rational
of having an additional pair of eyes continued to be heard to an extent that we
have started believing that designers should not verify their own code.
In my last post I emphasized the need for collaboration
wherein designers and verification engineers need to come together for faster
verification closure. Neil Johnson recently concluded in his post on designers
verifying their own code. My 2 cents to whether
designers should not or shall I say do not verify their own code –
To start with, let’s look at what all involves verification? The
figure adjoining is a summary of efforts spent in verification based on the study conducted by Wilson research in 2012
(commissioned by Mentor). Clubbing some of the activities it is clear that ~40% of
the time is spent in Test planning, Test bench development and other
activities. The rest ~60% of the effort is spent on Debug & creating + running
tests. The DUT here can be an IP or SoC.
When an IP is under development or SoC is getting integrated,
the DV engineers would be involved into the 40% of the activities mentioned
above. These are the tasks that actually fall in line with the statement of additional
pair of eyes validating design intent. They need to understand the
architecture of the DUT and come up with a verification plan, develop
verification environment and hooks to monitor progress. At this level, the
involvement of the design team starts with activities like test plan review,
code coverage review, inputs to corner cases and tests of interest.
So, once the
design is alive on the testbench, do the designers just sit & watch the DV
team validate the representation of spec developed by them? NO!
Debugging alone is a single major activity that consumes an
equal amount or sometimes more efforts from the designers to root cause the
bug. Apart from it, there is significant involvement of the design team during
IP & SoC verification.
For IPs, CRV is a usual choice. The power of CRV lies in automating
the test generation using the testbench. A little additional
automation enables the designers to generate constrained tests themselves. Assertions
are another very important aspect in IPs. With introduction of assertion
synthesis tools, the designers work on segregating the generated points into
assertions or coverage. For SoCs, apart from reuse of CRV, directed verification is
an obvious choice. Introduction to new tools on graph based verification help designers
to try out tests based on the test plan developed by the DV engineer. Apart
from this, corner case analysis and usecase waveform reviews are another time
consuming contributions put in by designers for verifying the DUT.
Coming back to the rational on having an independent pair of
eyes verify the code, the implication was never that the designers shall not verify
their own code. Infact there is no way for the DV team to do it in a disjoint
fashion. Today the verification engineer himself is designing a highly
sophisticated test bench that is actually equivalent to a designer’s code in complexity.
So it would be rather apt to say that it is the
two designs striking each other to enable verification under the collaboration
between design & verification teams!
What is your take on this? Drop a note below!
Thanks for sharing such a nice post, keep it up for further posting.
ReplyDeletewww.braintechnosys.com
thanks for sharing
ReplyDelete