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, 75 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 

Verification and FPGAs

 
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 -> Miscellaneous
View previous topic :: View next topic  
Author Message
aliss
Junior
Junior


Joined: Jan 07, 2004
Posts: 7

PostPosted: Mon Jan 12, 2004 10:03 am    Post subject: Verification and FPGAs Reply with quote

I am currently trying to determine the verification needs in our organization. We are a company that makes products that require subsystems/boards with the typical controls, dsp and data buffering/acquisition functions. Since we have low volumes, most, if not all, of our boards are designed with FPGAs, rather than ASICS. The real bottleneck for us, in terms of re-spin time, ends up being the boards, and not the HDL-designed chips (FPGAs) on them. A typical design might have 10k lines of RTL code, a pci core IP, sdram controller etc. We have some in-house vhdl-based transaction generators and bus functional models. Other than that, our testbenches are more vector-oriented, than transactions-oriented.

The important point to note however, is that any functional bug, when discovered in a system, can be reproduced after a few hours of head-scratching and force- release-ing signals in a vhdl simulator, and fixed. A re-spin does not have a high cost associated to it. Thanks to FPGAs.

What should be the verification environment in such a setting? Should HDLs be enough for FPGA-based designs? Is investment in more sophisticated environments (assertions, hvls or other higher level libraries) warranted? What is the industry's take on this?

This question should become increasingly important (unless there is a one-line answer to it), as FPGAs become more and more feasible.
Back to top
View user's profile
vhdlcohen
Industry Expert
Industry Expert


Joined: Jan 05, 2004
Posts: 1237
Location: Los Angeles, CA

PostPosted: Mon Jan 12, 2004 1:26 pm    Post subject: Reply with quote

Alis,

Quote:
products that require subsystems/boards with the typical controls, dsp and data buffering/acquisition functions. ...The real bottleneck for us, in terms of re-spin time, ends up being the boards, and not the HDL-designed chips (FPGAs) on them


Your description indicates an issue with system integration, and possibly requirements definition. You may want to consider ABV with PSL to do the following:
1. Document your requirements, in an executable and simulatable language both at the system and interface levels.
2. Document properties of your RTL design.
3. Verify your design in simulation
4. Verify you control design with a formal verification tool.

We (Ben, Aji, Srini) have just completed the book "Using PSL/SUGAR for Formal and Dynamic Verification 2nd Edition", which will be available Feb 1, 2004. For more information on that book, please read from my site the TOC, preface, and the forewords by Harry Foster, Cadence, Mentor, @HDL, and Safelogic.

We found PSL very useful at all levels of front-end design definition and verification processes. Even though it may not be obvious that PSL can be used at the "system level", I show below how that can be done. PSL is definitely also useful for the defiinition of interfaces and controllers as demonstrated in the book with the modeling of an AHB memory slave interface and a traffic light controller.

System level example (from book):
"When the CPU commands a FilterX operation, the image processing subsystem shall perform the FilterX operation, as described by the function FilterX. The FilterX operation on a scene image of size 100 x 100 pixels shall be formed in less than 1000 cycles.

Code:
property FilterXProcessing =
    always {xaction.do_FilterX_cmd && image_processor.scene_loaded} |->
          {[*0:999];  image_processor.done_FilterX };
 
property FilterXProcessingCheck =
     always image_processor.done_FilterX  ->
                  image_processor.FilterX_scene ==  FilterX(xaction.sent_scene);
 
 property HotPointResults =
    always {xaction.get_FilterX_hotpoints_cmd} |=> {[*0:100];
                        FilterX_compare(results.hotpoints_array,
                                                 FilterX_hotpoints(xaction.sent_scene))};

Functions are used for the defintion and verification of image processing.

Below is an interface type of requirement (from dictionary section of the book):
If signal hit is active and signal pending is inactive (COND1), then the next time pending becomes active (COND2), signal sel5 must be active (sequence). FL_Property “Sequence |-> Sequence”

Code:
property HitPendingSel5 = always {hit && !pending; pending[->1]} |-> {sel5};


-----------------------------------------------------------------------------
Ben Cohen Trainer, Consultant, Publisher (310) 721-4830
http://www.vhdlcohen.com/ vhdlcohen@aol.com
Author of following textbooks:
* Using PSL/SUGAR for Formal and Dynamic Verification 2nd Edition, 2004 isbn 0-9705394-6-0
* Real Chip Design and Verification Using Verilog and VHDL, 2002 isbn 0-9705394-2-8
* Component Design by Example ", 2001 isbn 0-9705394-0-1
* VHDL Coding Styles and Methodologies, 2nd Edition, 1999 isbn 0-7923-8474-1
* VHDL Answers to Frequently Asked Questions, 2nd Edition, isbn 0-7923-8115
------------------------------------------------------------------------------
Back to top
View user's profile Send e-mail Visit poster's website
aliss
Junior
Junior


Joined: Jan 07, 2004
Posts: 7

PostPosted: Mon Jan 12, 2004 2:36 pm    Post subject: Verification and FPGAs Reply with quote

My own gut feeling was also that assertions and sugar are probably the best verification methodology that we could adopt. Executable specifications and the ability to do whitebox/blackbox testing in a compact form make assertions a very powerful concept. Also, the implementation of ABV (as sugar comments) makes it easier to adopt it.
But the issue is also a more general one: what is the industry's view on the amount of functional verification effort needed for FPGAs. How does that compare with what is needed for ASICs.
Right now, from what I have seen, it seems to be blow and go. You create directed tests and scenarios, simulate those, and put the chip in the system. So long as software doesn't complain, you are all set. When you hit a bug, recreate it in simulation, view the waveforms, and create a fix for it. The amount of time needed for a respin can be anything from a few hours to a few days.
Or, if I could be more specific, does one need to concern himself with higher levels of abstraction, and libraries like testbuilder? Should I, knowing that my design would end up in an FPGA, continue to develop my testbenches in HDLs, or should I invest in more extensive verification using C++ libraries?
Back to top
View user's profile
Mike
Newbie
Newbie


Joined: Jan 06, 2004
Posts: 3

PostPosted: Mon Jan 12, 2004 2:58 pm    Post subject: FPGA Verification Reply with quote

Hi Aliss,

The "blow and go" approach might work for small designs (50k gates or less), but as the designs grow in size and complexity, you may find that the amount of time spent in the lab verifying the design gets out of hand. I parachuted into just such a development and I can tell you that there is a lot of "spinning the wheels" going on.

Also, if there are plans to cost-reduce to ASIC, I would recommend a more methodical approach with the FPGAs.

Mike
Back to top
View user's profile
vhdlcohen
Industry Expert
Industry Expert


Joined: Jan 05, 2004
Posts: 1237
Location: Los Angeles, CA

PostPosted: Mon Jan 12, 2004 3:26 pm    Post subject: Reply with quote

Quote:
The "blow and go" approach ...
... If there are plans to cost-reduce to ASIC, I would recommend a more methodical approach with the FPGAs.


This discussion reminds me of the comp.lang.vhdl thread on waterfall and spiral methodologies (do google search on "waterfall spiral vhdl").
In spiral methodology, you don't have a hard spec, but start to build right away, and then keep on correcting until you get something that works. In
waterfall, you MUST define all your requirements/architectural plans
BEFORE you build.

Interestingly enough, both approaches work. However, I tend to agree that as designs get more complex, the spiraling approach "blow and go" would require many more spirals.

A point that was not brought up is the "criticality of the design".
For example, if this design is for a traffic light controller the blow and go approach may validate the design as OK, yet in teh field thee may be situations not addressed or fully verified that can cause injuries and lalwsuits. For example, the traffic light controller may, under certain cirmustances, have all the lights GREEN at the time.
POINT: For critical designs or large designs, blow and go, or spiral methodology, may not be appropriate.


Ben
_________________
Ben Cohen http://www.systemverilog.us/
* SystemVerilog Assertions Handbook, 3rd Edition, 2013
* A Pragmatic Approach to VMM Adoption
* Using PSL/SUGAR ... 2nd Edition
* Real Chip Design and Verification
* Cmpt Design by Example
* VHDL books
Back to top
View user's profile Send e-mail Visit poster's website
aliss
Junior
Junior


Joined: Jan 07, 2004
Posts: 7

PostPosted: Mon Jan 12, 2004 4:47 pm    Post subject: FPGA verification Reply with quote

Let me give a specific example.
I recently worked on a PCI card that received data from a fiber optic cable, buffered it, and then bursted it out into the system memory. The card was inherited from a similar system, and so there were only minor modifications that were required (slightly different data format, different data rate etc.) PCI and a dram controller IPs were used. There were some configuration registers insde the logic. The testbench was an in-house configurable pci master and slave vhdl model. Data was pumped in from the vhdl on the fibre side, and ended up on the pci bus. Some directed tests (from the requirements document) were also simulated. The requirements were well-specified, but ofcourse, not executable.
When the board came in, it was plugged into the system, and software carried out other tests (from the specs); any bug identified was created in simulation, and changes were made to the VHDL code, and the fpga reprogrammed. (The criticality of this particular application was low.)

Given that such scenarios are typical, (and granted that ABV is still a good idea), should we invest in functional verification using testbuilder sort of libraries? Or should we stick to VHDL for testbenching, especially, if we supplement it with ABV? I guess thats the short question that I am looking an answer for.

Thanks for all your useful comments.
Back to top
View user's profile
vhdlcohen
Industry Expert
Industry Expert


Joined: Jan 05, 2004
Posts: 1237
Location: Los Angeles, CA

PostPosted: Mon Jan 12, 2004 8:50 pm    Post subject: Reply with quote

Quote:
Given that such scenarios are typical, (and granted that ABV is still a good idea), should we invest in functional verification using testbuilder sort of libraries? Or should we stick to VHDL for testbenching, especially, if we supplement it with ABV? I guess thats the short question that I am looking an answer for.


Your question deals with "methodology", and essentially you're asking which methodology is best: ABV, model libraries, TB, hot-test, formal verification?
The simple answer is YES to all. They all are used and work to some degree.
I believe that ABV with PSL is not necessarily a substitution for other methodologies, but rather it is a supplement. With ABV, one can document the requirements and the design. PSL is an ABV language, and in simulation helps to affirm the validity of the model thru verification and functional coverage of the properties and functional cases that were tested.

Model libraries help in verifying interfaces or operation of IP models. They are nice.

The point though is that the solution is not an "either or", but rather which combination of methodologies works best for you. In your particular case, it sounds like ABV, with some model libraries, simulation, and hot-tests would work, with each methodology supplying or confirming a different aspect of the verification.

By the way, I should add that, during the writing of our PSL book, we really liked that the verification of models was greatly simplified with PSL. Functional coverage gives you a higher level of confidence that the "functionality" of the design was tested and verified. When you add formal verification, then you add the completion of verification for the control modules.
Ben Cohen
_________________
Ben Cohen http://www.systemverilog.us/
* SystemVerilog Assertions Handbook, 3rd Edition, 2013
* A Pragmatic Approach to VMM Adoption
* Using PSL/SUGAR ... 2nd Edition
* Real Chip Design and Verification
* Cmpt Design by Example
* VHDL books
Back to top
View user's profile Send e-mail Visit poster's website
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 -> Miscellaneous All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot 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.472 Seconds