Ok,I have no industrial experience so I am basically a fresher,and hopefully somebody could help me since with all the concepts I learned I didn’t know how to answer his question.
Starting from the very beginning, he asked me to talk about a CPU verification project with Systemverilog, so I told him what I did, generator, scoreboard,monitor and everything, and he then asked me: how did you come up with the tests and constrains to reach 100% coverage?
so I said based on the function of the unit we were testing, it’s black box test so these tests just came from our brain, and blablabla, and we could make it 100% but that doesn;t mean bug free.
He said is there a systematic way of doing that?
I am confused, ok, systematic way, but our teacher only said to use random constrained test and assertions and coverage plan, and they all come from our brain directly, and I already answered him with my previous talk, coverage-driven constrained random test, so he didn’t consider it systematic. Maybe not enough? So I said more about how we came up with coverage groups and why. He still seemed unsatisfied and gave me another example said Intel once designed a multiplier that had bug in it, a certain number as the inputs would generate the wrong result. How will you verify a multiplier is a multiplier instead of a adder?
More confusing.
Since we are talking about functional verification, so I said build scoreboard, build coverage group, and depend on the length of input, test overflow, and so on. We can test the carry propagates, generate seeds within valid range and then he said it would then take 2^32 if you have 16 bits for each input. I say no it wouldn’t since it is not necessary to do exhaustive test, and he asked then how do you ensure 100% coverage.
It’s like a he was not listening to me when i said i wrote the coverage plan and generator to do the test.
So I am here to ask, everyone, what the hell does he mean by systematic way? I am so frustrated by this question.
Help will be appreciated!