I am attending an interview tomorrow and I have been asked this question in almost every interview I have attended.
Given a DUT + specification, how do you verify?
Could someone briefly explain me how I should start answering this question? What all should I consider (Testplan first with priorities, Testbench environment, coverage etc) ?
NOTE: Answer doesn't have to be specific to this DUT. I want overall picture of how to explain this.
Thanks in advance
Obviously there are many ways (and many views) on How to go about verifying a DUT .
This is just one the many views. Even though there is an order some of the steps can change or they can even be merged or even skipped based on the design specific requirements.
Things to consider on the way
1) 1) Is this a System-level, Full Chip, Block level verification environment or Is this an ASIC or an FPGA
2) Based on the complexity how many levels of TB are required.
e.g. many Block level -> few sub-system->single full-chip environment…
3) Based on project duration and time to closure – do you need to support FPGA and /or emulation.
4) Formal Verification – which blocks.
5) Is there a requirement for co-simulation – from the software team. Do you need to use API from the software/architecture team?
6) Is there requirement to generate vectors – tester vectors , bring up vectors .
7) How do you want to check the test pass criteria?
a. Model/scoreboards –
i. Architecture Models
ii. Transaction level Models ( more detailed from above )
iii. Cycle accurate Models. (e.g. arbiters )
b. Assertions – run time + formal
8) Re-use consideration
a. Sequences
i. Init
ii. Data/control
b. Scoreboard
c. Agents
9) Debug Requirements
a. Output formatting.
b. Tools to monitor and extract information.
10) Which Language, Simulator and tools best fit the requirements?