Thursday, February 09, 2012     Register | Login | Search | Contact Us
     

Many of you already received communications about the move of the Cadence user community into cadence.com. And many of you have already joined, with over 4000 registrations in the first two weeks.

The new Cadence Community enhances the ability of Cadence users to connect and collaborate. In addition to moving the community into cadence.com -- enabling single sign-on for community, Sourcelink and Cadence events -- the new site is organized around nine technology segments, giving you easy access to product information, training, forums and blogs. Some of the new features include:
  • Ability to respond to posts via e-mail
  • Technology-specific blogs
  • Latest Web 2.0 social networking capabilities
  • Public profile options
  • Private messaging
  • Friends lists
Visit the new Cadence Community today at www.cadence.com/community and join the discussions!

Registration note: Due to the scope of the enhancements and the new SSO registration system, we were not able to migrate existing cdnusers.org member accounts. So new registrations are required, but this enables a broader set of functionality we think you'll enjoy.

Forum note: Under the guidance of forum moderators, we have taken the 20+ cdnusers.org forums and consolidated them into 11 forums on the new site. Posts have been brought over so you can leverage that posting history. CDNusers forums will be set to read only starting 7/30, and cdnusers.org will be redirected to the new community on 8/4.

Best regards,
Mike and Tom

Michael A. Catrambone - Steering Committee Chairman
Distinguished Engineer
PCB/Mechanical
UTStarcom, Inc.

Tom Diederich
Cadence Community Manager
Home
Forums
Subject: SV Monitor
Posting to forums is available to community members only.
Login or Register
Rate this topic:
   
Author Messages
prasad_vc
Posts: 12
Online: User is Offline
4/02/2008 10:38 PM  
Hi,

How can one effectively check for the FSM Transition Correctness using SV Assertions?

-Vivek C. Prasad

-Vivek C. Prasad
prasad_vc
Posts: 12
Online: User is Offline
4/02/2008 11:15 PM  
Following is the Scenario,

event got_11;
event got_01;

always @(ap, an) begin
if (ap==1 && an == 1)
-> got_11;
else if (ap==0 && an ==1)
-> got_01;
end

// How can i use the sequence/property to implement this.
// 'e'-Language has {@got_11;@got_01} @aclk;
// Can i use something similar in SV???

-Vivek C. Prasad
TAM
Posts: 56
Online: User is Offline
4/03/2008 7:50 AM  
I really don't know if I am interpreting your question correctly, but I'll make a try at it and you can elaborate some more if I am misinterpreting you.

The following coverage points can be used to see if you've visited a particular state in your design.

got_11: cover property ( @(posedge aclk) ap == 1 && an == 1 );
got_01: cover property ( @(posedge aclk) ap == 0 && an == 1 );

You could then use the functional coverage tool (icc) to tell if those particular coverage points were reached.

If you wanted to react to those coverage points in your testbench, you can add a action block to the coverage point.

got_11: cover property ( @(posedge aclk) ap == 1 && an == 1 )
begin
$display("Got 11!");
test11 = 1;
...
end

If you are simply looking for coverage of your FSM, then you don't really need to add SV code. The icc tool will extract the FSM and tell you the state and transition or arc coverage of your tests.
prasad_vc
Posts: 12
Online: User is Offline
4/03/2008 10:02 PM  
TAM,

Thanks for your feedback.
My objective is to check whether the I/O Lines are following the protocol properly. So, the monitor will snoop the lines to check that protocol is not violated.

In my example, i am emitting events when the ap/an lines have desired values, how can i use Assertions in SV for taking the events as input and monitor the state transitions?

And yes, i can use the above guidelines for coverage.


-Vivek C. Prasad
tpylant
Posts: 87
Online: User is Offline
4/04/2008 6:40 AM  
This is probably a better question for the ABV forum, but here is what I came up with:

;
 
  //event got_11, got_01;
  bit got_11, got_01;
 
  always @(ap, an) begin
    if (ap==1 && an == 1) begin
      //-> got_11;
      got_11 = 1; got_01 = 0;
    end
    else if (ap==0 && an ==1) begin
      //-> got_01;
      got_01 = 1; got_11 = 0;
    end
  end
 
  assert property (@(ap, an) $rose(got_11) |=> $rose(got_01));
 
endmodule
 
module test();
 
  bit ap, an;
 
  always       #5 ap = ~ap;
  always @(ap) #3 an = ~an;
 
  monitor mon(.ap, .an);
 
endmodule
Tim
TAM
Posts: 56
Online: User is Offline
4/04/2008 6:46 AM  
I don't think we can really give a course in assertion-based verification in this forum. But ABV sounds exactly tailored for the kind of things you want to do. ABV allows you to take an english-language specification like "when 'ap' is asserted, 1 clock after 'an' is asserted, it will go to 0" and translate it into HDL that can be embedded in your test.

an_once: assert property ( @(posedge clk) ( ap && an ) |=> ( !an ) );

This will be ignored by the synthesis tools, so it can be put directly in your FSM code and travel with it. It serves as both a dynamic checker for correct behavior and as documentation of the protocol that the FSM was written to implement.

I could go on, but this would become a marketing presentation pretty quickly, since I'm a believer in the efficacy of ABV.
tpylant
Posts: 87
Online: User is Offline
4/04/2008 6:49 AM  
If you are a Cadence customer, you can visit http://myipcm.cadence.com and access all of our methodology documentation for implementing ABV.

Tim
ajeetha
Posts: 97
Online: User is Offline
4/04/2008 9:19 AM  
Posted By prasad_vc on 4/03/2008 10:02 PM
TAM,

Thanks for your feedback.
My objective is to check whether the I/O Lines are following the protocol properly. So, the monitor will snoop the lines to check that protocol is not violated.

In my example, i am emitting events when the ap/an lines have desired values, how can i use Assertions in SV for taking the events as input and monitor the state transitions?

And yes, i can use the above guidelines for coverage.

It is simpler in SV(A) - no need of extra events! Use the booleans as in the if..else and write your SVA (as others have shown the code snippet). Other benefit is - this can be readily used by a formal checker like IFV.

Regards
Ajeetha, CVC
www.noveldv.com

Posting to forums is available to community members only.
Login or Register



ActiveForums 3.6
     
Copyright 2006 Cadence Design Systems, Inc.