Verification Guild
A Community of Verification Professionals

 Create an AccountHome | Calendar | Downloads | FAQ | Links | Site Admin | Your Account  

Login
Nickname

Password

Security Code: Security Code
Type Security Code
BACKWARD

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Modules
· Home
· Downloads
· FAQ
· Feedback
· Recommend Us
· Web Links
· Your Account

Advertising

Who's Online
There are currently, 81 guest(s) and 0 member(s) that are online.

You are Anonymous user. You can register for free by clicking here

  
Verification Guild: Forums

 Forum FAQForum FAQ   SearchSearch   UsergroupsUsergroups   ProfileProfile  ProfileDigest    Log inLog in 

stimulus vector generation

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Verification Guild Forum Index -> Simulation
View previous topic :: View next topic  
Author Message
thebamaman
Newbie
Newbie


Joined: Oct 11, 2004
Posts: 3

PostPosted: Mon Oct 18, 2004 6:14 pm    Post subject: stimulus vector generation Reply with quote

I am curious about people's approaches for stimulus generation. Currently (hopefully not for much longer) our block-level testing uses a model written in C that is used to compare against the RTL. The RTL acts as a black-box that is driven by the same stimulus that is sent to the C model, and then the outputs of both are compared. Now that you have an idea of our environment, here are the usual tests written to stimulate the model and RTL.

    Walking ones, zeros, A's, and 5's
    Directed stimulus for the block
    Random stimulus generation
    Corner cases requested by the RTL designer

I was wondering about the best way to go generating stimulus. Are the walking tests that necessary anymore? Are directed stimulus tests, then random tests any better or worse than constrained random testing? Conceptually the directed stimulus tests usually take quite a bit of time to write, and it seems like directed random tests could take less time, but is that correct? I'm trying to shore up our verification strategies, so all input is greatly appreciated.
Back to top
View user's profile
jmcneal
Senior
Senior


Joined: Jan 12, 2004
Posts: 34
Location: Hillsboro, Oregon

PostPosted: Tue Oct 19, 2004 11:07 am    Post subject: Reply with quote

From my experience the walking 1's and A's 5's are mostly used in memory testing. They are often used in production testing to test for manufacturing errors (not functional errors).

These are the types of tests that get written in directed environments that are intended to demonstrate that the block is good enough with a minimum number of tests. Since each test case takes the same effort to write, the number of cases is usually reduced as much as possible, to save schedule time.

If it were me, I'd write a random stimulus generator and start that running. Then I'd write coverage points for the corner cases the designer has asked for. Writing and reading random data for any significant period of time should easily demonstrate correct functionality better than walking 1's and 0's. If it is necessary to have the walking 1's, 0's, A's, 5's, then adding that (as a constraint or as coverage) is usually fairly simple.

In many cases good a random stimulus test may take longer than a directed test, but the good random test case will simulate lots of different combinations, while the directed test will only test one thing. Let the random case run long enough and you will hit the walking 1s, 0s, As, and 5s. As well as the 0F's, the 33's, etc.

j
Back to top
View user's profile
Marcus
Newbie
Newbie


Joined: Sep 09, 2004
Posts: 4

PostPosted: Mon Oct 25, 2004 3:21 pm    Post subject: Reply with quote

As far as walking ones/zeroes are concerned, they are essential in integration testing. Think, for instance, of a block with a memory-like (address, data) interface that will be accessed by more than one other block. You want to make sure they are hooked up correctly. If you deal with address decoders (register files in RTL components, bus-switches, etc.) you want to make sure that there is no crosstalk (caused by functional address decoding errors). This requires writing/reading all locations in both, ascending and descending direction, depending where you start painting the boxes in black. Devices with large address ranges (e.g. switches), need to be dealt with differently though. Typically these devices have some sort of enable signal at each port which could be verified by an appropriate assertion.

As for random vs. directed, I'd strongly recommend looking into random testing. But keep in mind that you want to cut down simulation time by writing constraints for potential rat holes you know of up front. There is no point in waiting for a random generator to come up with a sequence that is quickly written as directed test (or a set of strong constraints for that matter). You don't have time to waste, do you.

Best regards,
Marcus
Back to top
View user's profile Visit poster's website
asif
Senior
Senior


Joined: Oct 20, 2004
Posts: 18

PostPosted: Wed Oct 27, 2004 10:03 am    Post subject: Reply with quote

Walking ones,zeros and A5 : These are very much useful for register testing as well. Generally the first release of RTL has lots of unconnected registers and these test help in checking the connections.
Later during the project ie end of verification they add for code-coverage metric.


Directed stimulus for block : These ensure that the intended functionality is implemented. For functional verification this takes about 85% of the time.Foucs only on requirments here.

Random stimulus : Once your done with directed tests and sure that functionality is well tested. Give random vectors. The results can be shocking at times..

Corner cases by RTL designer : Assertions can be of very much help here.Ensure you have hit the condition asked by the designer. Otherwise a corner case is a subset of random test.

Well there is no best way of generating stimulus but step and step way of doing is best Smile

When using the reference model based approach the stimulus "may not look very useful " as C and RTL outputs are directly compared But are still "required/must" because

1.The C model would take some time for development.

2.The C model has to be cycle accurate.

3.The reference C model has to be tested well.

Using a reference C model gives additional confidence but one still needs to run all the above tests.

-Asif
Back to top
View user's profile
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Verification Guild Forum Index -> Simulation All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Verification Guild © 2006 Janick Bergeron
Web site engine's code is Copyright © 2003 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Page Generation: 0.139 Seconds