|HOME |ABOUT |ARTICLES |ACK |FEEDBACK |TOC |LINKS |BLOG |JOBS |


Tutorials



FSM COVERAGE


It is the most complex type of code coverage, because it works on the behavior of the design. Using Finite state machine coverage, all bugs related to finite state machine design can be found. In this coverage we look for how many times states are visited, transited and how many sequence are covered in a Finite state machine.  



State Coverage:


It gives the coverage of no. of states visited over the total no. of states. Suppose you have N number of states and state machines transecting is in between only N-2 states then coverage will give alert that some states are uncovered. It is advised that all the states must be covered.


Transition Coverage:


It will count the no. of transition from one state to another and it will compare it with other total no. of transition. Total no. of transition is nothing but all possible no. of transition which is present in the finite state machine. Possible transition = no. of states * no. of inputs.


EXAMPLE of FSM:
    module fsm (clk, reset, in);
       input        clk, reset, in;
       reg    [1:0] state;
    
       parameter s1 = 2'b00; parameter s2 = 2'b01;
       parameter s3 = 2'b10; parameter s4 = 2'b11;
    
       always @(posedge clk or posedge reset)
       begin
          if (reset)  state <= s1;
          else  case (state)
         s1:if (in == 1'b1) state <= s2;
            else state <= s3;
         s2: state <= s4; 
         s3: state <= s4; 
         s4: state <= s1; 
                endcase
        end
    endmodule
    
    module testbench();
       reg clk,reset,in;
      
       fsm dut(clk,reset,in);
      
       initial
          forever #5 clk = ~clk;
      
       initial
       begin
          clk =0;in = 0;
          #2 reset = 0;#2 reset = 1;
          #21 reset = 0;#9 in = 0;
          #9 in = 1;#10 $finish;
       end
    
    endmodule


    FSM coverage report for the above example:
    
    // state coverage results
    s1                                | Covered
    s2                                | Not Covered
    s3                                | Covered
    s4                                | Covered
    // state transition coverage results
    s1->s2                            | Not Covered
    s1->s3                            | Covered
    s2->s1                            | Not Covered
    s2->s4                            | Not Covered
    s3->s1                            | Not Covered
    s3->s4                            | Covered
    s4->s1                            | Covered


Index
Asic Design
Bottle Neck In Asic Flow
Functional Verification Need
Testbench
Linear Testbench
Linear Random Testbench
How To Check The Results
Self Checking Testbenchs
How To Get Scenarios Which We Never Thought
How To Check Whether The Testbench Has Satisfactorily Exercised The Design
Types Of Code Coverage
Statement Coverage
Block Coverage
Conditional Coverage
Branch Coverage
Path Coverage
Toggle Coverage
Fsm Coverage
Make Your Goal 100 Percent Code Coverage Nothing Less
Functional Coverage
Coverage Driven Constraint Random Verification Architecture
Phases Of Verification
Ones Counter Example
Verification Plan

Report a Bug or Comment on This section - Your input is what keeps Testbench.in improving with time!





<< PREVIOUS PAGE

TOP

NEXT PAGE >>

copyright © 2007-2017 :: all rights reserved www.testbench.in::Disclaimer