Functional Checking of Design Using Formal Verification Techniques
Functional Checking of Design Using Formal Verification Techniques
COIMBATORE-641004.
INTRODUCTION
VERIFICATION METHODOLOGIES
WHY FORMAL VERIFICATION?
FORMAL VERIFICATION OF OPERATION MODULE
RESULTS
FORMAL VERIFICATION OF CONFIGURATION MODULE
RESULTS
CONCLUSION
3 INTRODUCTION
Verification is a process to ensure that the intent is preserved in the implementation. Verifies
the correctness of the Design.
Verification consumes 70% of design effort in multi million gate ASICs, reusable IPs and SoC
designs.
Verification – Am I building the product right?
Implementation should meet specification
Traditional
Functional - Simulation
Formal – Equivalence Checking
Property Based
Functional – ABV during the Design
Formal – Property Verification
5 ASSERTION BASED VERIFICATION
What is an assertion?
Assertion is a statement which is used in the design to
Check the intended behavior of the design
Ensure consistency between designer’s intention and what is
developed / implemented
Major Functionality
Error detection
Error notification
6 PROPERTY BASED VERIFICATION
What is a property?
General behavior attribute to characterize a design
A collection of logical and temporal relationships between
and among subordinate Boolean expressions, Sequential
expressions and other properties that in aggregate represent
a set of design behavior
It can be used in verification as assertion or functional
coverage specification or constraints
7 Drawbacks of Simulation
S1 S0 = p
Sw ...
Fixed Point
Initial Set of States
Starting from Initial State, it explores all possible reachable states in one step
until it hits a fixed-point [beyond which no new states can be explored]
Validate properties at all stages.
10 RESULT ANALYSIS
PASS:
No additional reachable states implies that all reachable states have been verified
Assertion Passes
FAIL:
A Failing state indicates that the assertion fails.
Additional state space still being reached implies that the proof is not yet complete
Cannot go on
Time limitation
Memory limitation
11 PROJECT WORK
Understanding the SPEC of RTL modules of NAND Flash memory and make an
Assertion Plan.
Generating Automated Assertion file.
Load the Design files and Assertion files into the Formal Verification tool.
Do Formal Verification for assertion checks.
Debug the failures and Conclude whether the verification engineer understood the
feature of RTL in a wrong way or the RTL behaves in a unexpected way. The changes
needed can be done either by the Designer or Verification engineer.
DESIGNER VERIFICATION
STEP 1: RTL PLAN DOCUMENT
INPUTS
FAULT
Achieve
REPORTED TO DEBUG
100% clean
EITHER VE or
intented RTL
Designer
14 OPERATIONS OF NAND FLASH
property Flavor_1_3(clk,async_rst,code,enable,conf,sync_rst,signal);
@(posedge clk) disable iff (!async_rst)
(code && enable && conf && !sync_rst) |=> signal;
Endproperty
property Flavor_neg_1_3(clk,async_rst,code,enable,conf,sync_rst,signal);
@(posedge clk) disable iff (!async_rst)
$rose(signal) |-> ($past(async_rst) == 'b1) && $past(enable) &&
$past(conf)&& $past(code) && $past(!sync_rst);
Endproperty
19 ASSERTIONS PLAN contd.,
property Flavor_deassert1_3(clk,async_rst,data,enable,conf,sync_rst,signal);
@(posedge clk) disable iff (!async_rst)
(sync_rst) |=> !signal;
Endproperty
property Flavor_deassertneg1_3
(clk,async_rst,data,enable,conf,sync_rst,signal);
@(posedge clk) disable iff (!async_rst)
$fell(signal) |-> ($past(sync_rst) == 1)) ;
Endproperty
ASSERTIONS PLAN contd.,
property Flavor_2(clk,async_rst,code,enable,signal);
20 @(posedge clk) disable iff (!async_rst)
(code && enable) |=> signal;
endproperty
property Flavor_2_neg(clk,async_rst,code,enable,signal);
@(posedge clk) disable iff (!async_rst)
$rose(signal) |-> $past(code & enable);
endproperty
property Flavor_2_deassert(clk,async_rst,code,enable,sync_rst,signal);
@(posedge clk) disable iff (!async_rst)
(!code) |=> !(signal);
endproperty
property Flavor_2neg(clk,async_rst,code,enable,sync_rst,signal);
@(posedge clk)
$fell(signal) |-> ($past(!enable) || $past(!code)) || (!async_rst) ;
endproperty
21 ASSERTION.sv FILE
module check( input ports);
wire ;
wire ; //Wire declarations
Properties
:
:
assert property();
endmodule
bind
THE RESULTS BEFORE DEBUG
22
RESULTS AFTER DEBUG
23
24 REASONS FOR ASSERTION FAILURE
If a Signal doesn’t arrive at all in RTL then vacuous pass will be attained.
25 CONFIGURATION MODULE
The Configuration RTL module is implemented mostly as
configurable registers. The latches are implemented in two flavors,
they are with default values of either zero or non-zero.
Due to huge loading time caused by high parasitic loading, the
loading operations take a lot of time. Hence the Configurations are
stored in ROMFUSE.
When parameters are stored in ROMFUSE, timing during the
configuration loading operations can be minimized.
Rather than accessing ROMFUSE each time to get Configurations,
On PowerOnRead, all the ROMFUSE configurations are loaded into
the LOCALREG. This is the main functionality of the RTL module.
26 SAMPLE SPECIFICATION DOCUMENT OF
CONFIGURATION
0 (zero)
A (non-zero)
ASSERTION PLAN
ASSERTION FOR REGISTERS WITH ZERO AS DEFAULT
27
property local_reg(Addr,Reg);
@(posedge clk) disable iff(reset)
(( ADDR === Addr )) |->
(Reg ==DEFAULT );
Endproperty
THANK YOU