Advertisment

Five steps to close functional coverage to 100 p.c.

author-image
Deepa
New Update

Dilip Prajapati, sr. ASIC verification engineer, eInfochips

Advertisment

Functional coverage is the major part of functional verification closure, as it directs the functional verification, as it demonstrates/measures the completeness of functional verification and also it reduces the un-necessary efforts/iteration to close the functional verification to 100 per cent of SOC/ASIC/FPGA/Module or IP. Functional coverage is also one of important sign off criteria for any successful tap-out and gives us positive confidence on maturity of design before its tap-out.

Five Simple Steps to close Functional Coverage to 100 per cent:

Step-1: Proper understanding of design (DUV/DUT) functionality/specification

Advertisment

Before developing functional coverage, functional coverage developer has to first understand the design's (DUV/DUT's) functionality for which functional coverage developer has to develop functional coverage otherwise due to lack of design specification understanding will cause abnormal functional coverage and resulting into un-necessary holes. This is the basic and most important requirement of functional coverage development or in verification terminology for functional verification "Misunderstanding of Specification is the Leading Cause of Bug" here same thing for functional coverage "Misunderstanding of Specification is the Leading Cause of hole".

Step-2: Functional Coverage Development

Functional coverage development is based on the functionalities which you want to cover in functional coverage i.e. features extracted from specification of design which we want to cover as a part of our functional coverage. Following things to be taken care during the development of functional coverage,

Advertisment

Proper probing of functional coverage particularly when you are working at SOC/ASIC/FPGA level development of functional coverage

Cross coverage should handle properly to avoid unwanted holes because it will generate 2m x 2n bins for two variable's cross product where, m and n is the no. of bits (width of variable) of 1st and 2nd variable respectively. For example 1st and 2nd variable has four bits than cross coverage of 1st and 2nd variable will generate 24 x 24 = 16x16=256 bins!

Identify/Isolate the not required/not interested/illegal values/bins/sequences/transitions and put them into ignore bins/illegal bins to avoid unnecessary holes

Advertisment

Develop covergroup based on functionality i.e. Include the coverpoints/bins which are targeted for similar functionalities/same sets of features under one common covergroup

Limit automatic defined bins by providing auto_bin_max value whenever required

Give proper/meaningful name based on its functionality along with appropriate comment to cover group, cover point and bin which will very helpful during functional coverage analysis/debugging time. It will also very useful to other persons/third party/customer for easily understand/handover developed functional coverage

Advertisment

Sometimes we have to also update or modify developed base line functional coverage to incorporate/cover any run time changes in design or any update in design. If design, verification and functional coverage development is done in parallel than modification/update in functional coverage is the part of functional coverage development cycle.

Step-3: Cover the Functional Coverage

Based on our defined verification strategy i.e. directed or constraint random or random we can cover our functional coverage. There are many ways to hit the functional coverage for example with consecutive regressions, with single regression, with random/constraint random scenarios or with directed test cases/scenarios.

Advertisment

For only directed test cases based functional verification single regression which contains all required directed test cases for functional verification will be fine to cover required functionalities in functional coverage. But for verification which is based on randomization at that time consecutive regressions with cumulative approach/merging the functional coverage results will be very helpful.

Functional coverage analyses will provide us feedback mechanism for what to do/drive next??? to cover holes based on fine tuning to gradually increase the functional coverage and finally close it to 100 per cent.

Use directed test case/s to cover some corner or critical functionality of design. This will helpful during the fine tuning of functional coverage or when you are few steps away (when functional coverage is in the range of 90 to 95 per cent) to close functional coverage to 100 per cent. It will also reduce number of iterations to cover holes during fine tuning hence reduce the time to close functional coverage to 100 per cent.

Advertisment

Step-4: Analysis of Functional Coverage

Analysis of functional coverage is the most important part to close the functional coverage to 100 per cent.

As a part of functional coverage analysis one should clearly point out the reason for holes (for uncovered functional coverage) in the answer of question why it is not covered? Whether there is problem in RTL/Design or whether there is problem in developed Test Case/Scenario or whether there is problem in developed functional coverage itself!

By knowing this we can prevent any last time surprises to close the functional coverage to 100 per cent or with the help of this functional coverage developer will remain very transparent to what is happening? And with the help of this functional coverage developer will also know clearly the reason of particular hole and how to cover it/fix it with fine tuning in next consecutive iteration. Hence with the help of proper functional coverage analysis we will reduce the time in debugging to close the functional coverage to 100 per cent.

For functional coverage analysis people are generally use tool generated report. So, for effective use of it for functional coverage analysis one should first understand the functional coverage analysis features provided by the respective EDA tool used by him. When there are multiple iterations for functional coverage closer at that time cumulative approach/merging the multiple reports into one is very useful for functional coverage analysis.

Step-5: Fine Tuning

Based on functional coverage analysis, fine tuning will guide us what to do next to cover holes.
If there is any modification or any update in the functionality of design than based on this we have to modify or update our previously developed functional coverage and have to also modify or update the stimulus/test case/s to cover it. For consecutive iteration fine tuning will provides us feedback mechanism to gradually increase the functional coverage and close it to 100%.

Conclusion:

In this paper, I have presented the flow to close the functional coverage to 100% starting from its development to close it to 100 per cent using five simple steps. Here, I demonstrated the way how we can achieve our functional coverage to 100 per cent by knowing where to do what? I mean how to fill missing gaps to achieve the functional coverage to 100 per cent.

semicon