Quantcast
Channel: Cadence Functional Verification
Viewing all articles
Browse latest Browse all 652

Small is Beautiful—How UVM Test Case Extraction Can Improve Your Constraint Analysis Productivity

$
0
0

In the world formerly known as microelectronics, which is now actually nanoelectronics, small is sure beautiful. With the continued reduction in transistor size, we can afford to pack an insane amount of functionality into chips such as SoCs, while die sizes still remain tiny.

The amount of functionality on a modern SoC is truly mind-boggling. Even when you deal with a subsystem, you drown in complexity and excess information.

This can be particularly problematic in verification. Assume you are trying to stimulate your subsystem or complex block. You are very likely to use constrained random simulation with UVM. The problem is that the DUT complexity will make your constraints complex as well. This means that you need to produce a complex set of traffic into and out of the DUT.

In some cases, you might not be able to solve all the required constraints in your head. This will make it hard to predict the expected outcome, and what you should do about it. 

This problem becomes compounded when you run a serious and long simulation. 

(Please visit the site to view this video)

For example, after spending a few minutes before a randomization call, results might occur that do not meet your expectations. So you look at the results, tweak the constraints, and try again. This iterative effort can be very time consuming and annoying.

Ideally, you want to focus only on a small subset of the UVM environment. You want to analyze and iterate with the set of constraints associated just with a particular randomization call, not with the whole environment. 

In the Incisive 13.2 release, we have released a test case extraction feature that will help you solve this dilemma, and allow you to increase your constraint analysis productivity. This feature extracts just the relevant constraint set in a highly reduced test case, and it runs very fast.

Using the extracted test case, you can quickly run a large number of random seeds and analyze the randomization distribution that is achieved. You can debug constraint conflicts much faster this way, and get on with the verification.

A quick demo is shown in the video embedded above.

Once you have finished debugging the failure, and have obtained the expected result with the highly reduced test case, you can integrate your constraint changes back into the larger environment and get on with your main task of completing the verification of the DUT.

This is a true hidden gem and can make your day.

 

Keep on randomizing!

 

Axel Scherer

Incisive Product Expert Team
Twitter, @axelscherer 

 

 

 


Viewing all articles
Browse latest Browse all 652

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>